30         if (Prefix==
"" || Decfile==
"" || Mom==0.) 
 
   33                 cout << 
"prod_fsim.C+( <pref>, <decfile>, <mom>, [nevt], [res], [mode], [run], [full] )\n\n";
 
   34                 cout << 
"   <pref>     : output file names prefix\n";
 
   35                 cout << 
"   <decfile>  : decfile; 'DPM'/'FTF' uses DPM/FTF generator instead\n";
 
   36                 cout << 
"   <mom>      : pbar momentum; negative values are interpreted as -E_cm\n";
 
   37                 cout << 
"   [nevt]     : number of events; default = 1000\n";
 
   38                 cout << 
"   [res]      : resonance (ignored when running DPM); default = 'pbarpSystem0'\n";
 
   39                 cout << 
"   [mode]     : mode code; default = 900 (->DPM code)\n";
 
   40                 cout << 
"   [run]      : run number; should be set if mergeing output files from same mode; default = -1\n";
 
   41                 cout << 
"   [full]     : apply full selection, defined in config file 'softrig/selection_fsim.cfg'; default = 0\n\n";
 
   51                 double X = (Mom*Mom-2*mp*
mp)/(2*mp);
 
   52                 Mom = 
sqrt(X*X-mp*mp);
 
   57         if (Resonance==
"pbp")  Resonance = 
"pbarpSystem";
 
   58         if (Resonance==
"pbp0") Resonance = 
"pbarpSystem0";
 
   61         TLorentzVector 
fIni(0,0,Mom,0.938272+
sqrt(Mom*Mom+0.938272*0.938272));
 
   62         TDatabasePDG::Instance()->AddParticle(
"pbarpSystem",
"pbarpSystem",fIni.M(),kFALSE,0.1,0, 
"",88888);
 
   63         TDatabasePDG::Instance()->AddParticle(
"pbarpSystem0",
"pbarpSystem0",fIni.M(),kFALSE,0.1,0, 
"",88880);
 
   64         TDatabasePDG::Instance()->AddParticle(
"Z(3900)+",
"Z+",3.900,kFALSE,0.03,0, 
"",90000);
 
   65         TDatabasePDG::Instance()->AddParticle(
"Z(3900)-",
"Z-",3.900,kFALSE,0.03,0, 
"",-90000);
 
   72         bool SwFwdSpec = 
true;  
 
   82         Bool_t enableSplitoff    = 
true;  
 
   83         Bool_t mergeNeutrals     = 
true;  
 
   84         Bool_t electronBrems     = 
true;  
 
   85         Bool_t useEventFilter    = 
false;  
 
   86         Bool_t usePndEventFilter = 
false;  
 
   92         TString BaseDir =  gSystem->Getenv(
"VMCWORKDIR");
 
   93         TString splitpars = BaseDir+
"/fsim/splitpars.dat";
 
   97         TString  OutputFile     = Prefix+
"_fsim.root";
 
  101         Bool_t UseEvtGenDirect  = kTRUE;
 
  104         Bool_t UseBoxGenerator  = kFALSE;
 
  107         if (Decfile.BeginsWith(
"DPM"))
 
  109                 UseEvtGenDirect = kFALSE;
 
  114         if (Decfile.BeginsWith(
"FTF"))
 
  116                 UseEvtGenDirect = kFALSE;
 
  123                 UseEvtGenDirect = kFALSE;
 
  124                 UseBoxGenerator = kTRUE;
 
  127         usePndEventFilter=UseDpm;
 
  138         FairRunSim *
fRun = 
new FairRunSim();
 
  139         fRun->SetOutputFile(OutputFile.Data());
 
  140         fRun->SetGenerateRunInfo(kFALSE);
 
  141         fRun->SetUserConfig(BaseDir+
"/macro/softrig/g3ConfigNoMC.C"); 
 
  143         FairLogger::GetLogger()->SetLogToFile(kFALSE);
 
  150         fRun->SetGenerator(primGen);
 
  151         fRun->SetName(
"TGeant3");
 
  155                 FairBoxGenerator* 
boxGen = 
new FairBoxGenerator(Pdgcode, 1); 
 
  156                 boxGen->SetPRange(MomMin,MomMax); 
 
  157                 boxGen->SetPhiRange(0., 360.); 
 
  158                 boxGen->SetThetaRange(0., 180.); 
 
  159                 boxGen->SetXYZ(0., 0., 0.); 
 
  160                 primGen->AddGenerator(boxGen);
 
  165                 if (Decfile==
"DPM1") dpmmode = 1;
 
  166                 if (Decfile==
"DPM2") dpmmode = 2;
 
  176                 primGen->AddGenerator(Dpm);
 
  180                 bool noelastic = 
true;
 
  181                 if (Decfile==
"FTF1") noelastic=
false;
 
  183                 primGen->AddGenerator(Ftf);
 
  189                 primGen->AddGenerator(EvtGen);
 
  193         primGen->DoTracking(kFALSE);
 
  197         fRun->SetField(fField);
 
  212         if (
mode==900) usePndEventFilter=
true; 
 
  213         if (usePndEventFilter)
 
  286                 fastSim->
AddDetector(
"ScSttAlone",  
"thtMin=145.  thtMax=159.5 ptmin=0.1 pmin=0.0 pRes=0.04 thtRes=0.006 phiRes=0.007 efficiency=0.25");
 
  287                 fastSim->
AddDetector(
"ScSttMvd",    
"thtMin=20.9  thtMax=145.  ptmin=0.1 pmin=0.0 pRes=0.02 thtRes=0.001 phiRes=0.001 efficiency=0.85");
 
  288                 fastSim->
AddDetector(
"ScSttMvdGem", 
"thtMin=7.8   thtMax=20.9  ptmin=0.1 pmin=0.0 pRes=0.02 thtRes=0.001 phiRes=0.001 efficiency=0.85");
 
  289                 fastSim->
AddDetector(
"ScMvdGem",    
"thtMin=5.    thtMax=7.8   ptmin=0.1 pmin=0.0 pRes=0.03 thtRes=0.001 phiRes=0.001 efficiency=0.60");
 
  294                 fastSim->
AddDetector(
"ScSttAlone",  
"thtMin=133.6 thtMax=159.5 ptmin=0.1 pmin=0.0 pRes=0.04 thtRes=0.006 phiRes=0.007 efficiency=0.25");
 
  295                 fastSim->
AddDetector(
"ScSttAlone2", 
"thtMin=20.9  thtMax=133.6 ptmin=0.1 pmin=0.0 pRes=0.04 thtRes=0.006 phiRes=0.007 efficiency=0.80");
 
  296                 fastSim->
AddDetector(
"ScSttAlone3", 
"thtMin=7.8   thtMax=20.9  ptmin=0.1 pmin=0.0 pRes=0.04 thtRes=0.006 phiRes=0.007 efficiency=0.25");
 
  301                 fastSim->
AddDetector(
"ScFts",       
"thtMin=0.    thtMax=5.    ptmin=0.0 pmin=0.5 pRes=0.05  thtRes=0.002 phiRes=0.002 efficiency=0.80");
 
  309                 fastSim->
AddDetector(
"ScVtxMvd",   
"thtMin=5. thtMax=145. ptmin=0.1 vtxRes=0.005 efficiency=1."); 
 
  310                 fastSim->
AddDetector(
"ScVtxNoMvd", 
"thtMin=0. thtMax=5.   ptmin=0.0 vtxRes=0.05  efficiency=1."); 
 
  314                 fastSim->
AddDetector(
"ScVtxNoMvd", 
"thtMin=0. thtMax=160. ptmin=0.1 vtxRes=0.1 efficiency=1."); 
 
  321         fastSim->
AddDetector(
"EmcFwCap", 
"thtMin=10.0 thtMax=22.0 Emin=0.01 dist=2.5");
 
  322         fastSim->
AddDetector(
"EmcBwCap", 
"thtMin=142.0 thtMax=160.0 Emin=0.01 dist=0.7");
 
  328                 fastSim->
AddDetector(
"EmcBarrel",
"thtMin=22.0 thtMax=142.0 Emin=0.01 barrelRadius=0.5");
 
  333                 fastSim->
AddDetector(
"EmcFS",    
"thtMin=0.05 thtMax=10.0 aPar=0.013 bPar=0.0283 Emin=0.01 dist=8.2");
 
  342         fastSim->
AddDetector(
"SttPid",
"thtMin=7.8 thtMax=159.5 ptmin=0.1 dEdxRes=0.15 efficiency=1.");
 
  343         fastSim->
AddDetector(
"ScMdtPidBarrel", 
"thtMin=10.0 thtMax=130.0 pmin=0.5 efficiency=0.95 misId=0.01");
 
  344         fastSim->
AddDetector(
"ScEmcPidFwCap",  
"thtMin=10.0  thtMax=22.0  ptmin=0.0 pmin=0.0 efficiency=1.0");
 
  345         fastSim->
AddDetector(
"ScEmcPidBwCap",  
"thtMin=142.0 thtMax=160.0  ptmin=0.0 pmin=0.0 efficiency=1.0");
 
  350                 fastSim->
AddDetector(
"MvdPid",
"thtMin=5.  thtMax=133.6 ptmin=0.1  dEdxResMulti=1. efficiency=1.");
 
  355                 fastSim->
AddDetector(
"ScEmcPidBarrel", 
"thtMin=22.0  thtMax=142.0 ptmin=0.2 pmin=0.0 efficiency=1.0");
 
  360                 fastSim->
AddDetector(
"DrcBarrel",
"thtMin=22.0 thtMax=140.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
 
  365                 fastSim->
AddDetector(
"DrcDisc",
"thtMin=5.0 thtMax=22.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
 
  370                 fastSim->
AddDetector(
"ScEmcPidFS",     
"thtMin=0.5   thtMax=10.0  ptmin=0.0 pmin=0.5 efficiency=1.0");
 
  371                 fastSim->
AddDetector(
"Rich",
"angleXMax=5.0 angleYMax=10.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
 
  372                 fastSim->
AddDetector(
"ScMdtPidForward",
"thtMin=0.0  thtMax=10.0  pmin=0.5 efficiency=0.95 misId=0.01");
 
  376         fRun->AddTask(fastSim);
 
  385         int modeshort = 
mode;
 
  386         if (modeshort>1000000) modeshort /= 1000;
 
  387         if (modeshort>1000)    modeshort %= 1000;
 
  389         cout <<
" ****** mode:"<<
mode<<
"  modeshort:"<<modeshort<<endl;
 
  406         if (applyfull) stTask->
SetQAAll(
false); 
 
  410         fRun->AddTask(stTask);
 
  429         printf(
"RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
 
Bool_t AndMaxPdgCodes(Int_t max, std::vector< Int_t > &pdgCodes)
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetQAEvent(bool qa=true)
void WriteEvtFilterStatsToRootFile(TFile *outputFile=NULL)
Writes all relevant event filter information to the output root file. 
friend F32vec4 sqrt(const F32vec4 &a)
void AndFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical AND to connect with previously defined non-veto even...
void SetFastSimDefaults()
bool AddDetector(std::string name, std::string params="")
void SetFilterMaxTries(Int_t maxTries=99999)
Define the maximum number of times that this object should try to find an event which suits all event...
void SetUseFlatCov(bool v=true)
FairPrimaryGenerator * primGen
void SetUnstable(int pdg)
Primary generator with added event filtering capabilities. 
bool MergeNeutralClusters(bool merge=true, double par=0.389)
void SetInvMassFilter(TString filter, double min, double max, int mult=1)
void SetStoreTree(Bool_t store=true)
int prod_fsim(TString prefix="", Int_t nEvents=100, TString inputGen="", Float_t pbeam=0., TString simopt="")
void EnableElectronBremsstrahlung(bool brems=true)
void SetQAMctOnly(bool qa=true)
bool EnableSplitoffs(std::string fname="splitpars.dat")
void SetQAMode(int mode, bool qa=true)
FairBoxGenerator * boxGen
void SetQAAll(bool qa=true)
void SetVerbosity(int vb)
void ApplyFullSelection(int selmode=1)