Index: trunk/examples/createBSatBDependenceTable.cpp =================================================================== --- trunk/examples/createBSatBDependenceTable.cpp (revision 482) +++ trunk/examples/createBSatBDependenceTable.cpp (revision 483) @@ -1,295 +1,296 @@ //============================================================================== // createBSatBDependenceTable.cpp // // Copyright (C) 2010-2019 Tobias Toll and Thomas Ullrich // // This file is part of Sartre. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation. // This program is distributed in the hope that it will be useful, // but without any warranty; without even the implied warranty of // merchantability or fitness for a particular purpose. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // Author: Thomas Ullrich // Last update: // $Date$ // $Author$ //============================================================================== // // Main program to create impact parameter lookup table. // [Developer only] //============================================================================== #include #include #include #include #include #include "TableGeneratorNucleus.h" #include "TableGeneratorSettings.h" #include "TFile.h" #include "TH2F.h" #include "TVector3.h" #include "Constants.h" #include "DipoleModelParameters.h" #define PR(x) cout << #x << " = " << (x) << endl; using namespace std; double overlapFunctionT0(double); double overlapFunctionT1bSat(double); double overlapFunctionT1bNonSat(double); -void createLookUpTableOnFile0(unsigned int, int, int, int); -void createLookUpTableOnFile1(unsigned int, int, int, int, int); +void createLookUpTableOnFile0(unsigned int, int, int, int, string); +void createLookUpTableOnFile1(unsigned int, int, int, int, int, string); DipoleModelParameters *gParameters; int main(int argc, const char* argv[]) { - if (argc != 7) { - cout << "Usage: " << argv[0] << " A numberOfConfigurations starting ending structure model" << endl; + if (argc != 8) { + cout << "Usage: " << argv[0] << " A numberOfConfigurations filename starting ending structure model" << endl; cout << "structure:"<numConf) ending=numConf; cout<<"Create table for A="<BG(); // GeV^-2 double arg = (b*b/hbarc2) / (2*BG); return 1/(2*M_PI*BG) * exp(-arg); } double overlapFunctionT1bSat(double b) { // For bSat subnucleonic fluctuations, use a modified Gaussian (BE), // // Parameters for COM shifted STU, bSat: // Bqc = 4.5 // Bq = 1.26 // Nq = 3 // Sg = 0.3 // Sigma = 0.5 double Bq = 1.26; double Sg = 0.3; double Nq=3; // GeV^-2 double arg = (b*b/hbarc2) / (2*Bq); double bDep= 1/(2*M_PI*Bq*Nq) * 1/(exp(arg)-Sg); return bDep; } double overlapFunctionT1bNonSat(double b) { // For bSat subnucleonic fluctuations, use a modified Gaussian (BE), // // Parameters for COM shifted STU, bNonSat: // Bqc = 4.5 // Bq = 1.26 // Nq = 3 // Sigma = 0.5 (For Qs fluctuations) double Bq = 1.26; double Nq=3; // GeV^-2 double arg = (b*b/hbarc2) / (2*Bq); double bDep= 1/(2*M_PI*Bq*Nq) * exp(-arg); return bDep; } void createLookUpTableOnFile0(unsigned int A, int numConf, - int starting, int ending) + int starting, int ending, string rootfile) { // // A function to create a lookup table of nucleon configurations and save them on a file // This function is supposed to be independent from the rest of the code // and be called in the Main program with the nucleus number as an argument. // PR(starting); PR(ending); int numberOfConfigurations=ending-starting; //#TT Test TableGeneratorNucleus myNucleus(A); myNucleus.init(A); TableGeneratorSettings::instance()->setSeed(0); // sets also seed for ROOT vector hConfigurations(numberOfConfigurations); int numBbins=1e3, numAngleBins=1e3; double bRange=upperIntegrationLimit*myNucleus.radius()*1.1, angleRange=2*M_PI; ostringstream histoName; for(int iNuclei=starting; iNucleiGetXaxis()->GetBinCenter(ib); for(int iphi=1; iphi <= numAngleBins; iphi++) { double phi=hConfigurations[iNuclei]->GetYaxis()->GetBinCenter(iphi); TVector3 bvector=TVector3(b*cos(phi), b*sin(phi), 0.); double sumOfT=0.; for(unsigned int iA=0; iA < A; iA++){ sumOfT+=overlapFunctionT0((bvector-myNucleus.configuration.at(iA).position()).Perp()); } //for iA hConfigurations[iNuclei]->SetBinContent(ib, iphi, sumOfT); }//for iphi } //for ib if ((numberOfConfigurations/10) && iNuclei-starting % (numberOfConfigurations/10) == 0) { cout<Write(); delete hConfigurations[i]; hConfigurations[i] = 0; } lufile->Close(); - cout<<" done, bye!"<setSeed(0); // sets also seed for ROOT vector hConfigurations(numConf); int numBbins=1e3, numAngleBins=1e3, Nq=3; double bRange=upperIntegrationLimit*myNucleus.radius()*1.1, angleRange=2*M_PI; ostringstream histoName; double sigma=0.5; //should also be changed in TableGeneratorNucleus double satNorm=exp(sigma*sigma/2); for(int iNuclei=starting; iNuclei positions; positions.clear(); vector satScales; satScales.clear(); //Generate a Nucleon configuration: while(!myNucleus.generate()){} for(unsigned int iA=0; iAGetXaxis()->GetBinCenter(ib); for(int iphi=1; iphi <= numAngleBins; iphi++) { double phi=hConfigurations[iNuclei]->GetYaxis()->GetBinCenter(iphi); TVector3 bvector=TVector3(b*cos(phi), b*sin(phi), 0.); double sumOfT_i=0, sumOfT_j; for(unsigned int iA=0; iA < A; iA++){ sumOfT_j=0; for ( int jQ=0; jQSetBinContent(ib, iphi, sumOfT_i); }//for iphi } //for ib if ((numberOfConfigurations/10) && iNuclei-starting % (numberOfConfigurations/10) == 0) { cout<Write(); delete hConfigurations[i]; hConfigurations[i] = 0; } lufile->Close(); - cout<<" done, bye!"<