26 TString DetOpt=
"MvdGem EmcBar Drc Dsc FwdSpec" )
30 TLorentzVector
fIni(0,0,Mom,0.938272+
sqrt(Mom*Mom+0.938272*0.938272));
31 TDatabasePDG::Instance()->AddParticle(
"pbarpSystem",
"pbarpSystem",fIni.M(),kFALSE,0.1,0,
"",88888);
32 TDatabasePDG::Instance()->AddParticle(
"pbarpSystem0",
"pbarpSystem0",fIni.M(),kFALSE,0.1,0,
"",88880);
35 bool SwMvdGem =
false;
36 bool SwEmcBar =
false;
39 bool SwFwdSpec =
false;
41 if (DetOpt.Contains(
"MvdGem") || DetOpt.Contains(
"1") ) SwMvdGem =
true;
42 if (DetOpt.Contains(
"EmcBar") || DetOpt.Contains(
"2") ) SwEmcBar =
true;
43 if (DetOpt.Contains(
"Drc") || DetOpt.Contains(
"3") ) SwDrc =
true;
44 if (DetOpt.Contains(
"Dsc") || DetOpt.Contains(
"4") ) SwDsc =
true;
45 if (DetOpt.Contains(
"FwdSpec") || DetOpt.Contains(
"5") ) SwFwdSpec =
true;
48 Bool_t enableSplitoff =
false;
49 Bool_t mergeNeutrals =
false;
50 Bool_t electronBrems =
false;
51 Bool_t useEventFilter =
false;
54 TString BaseDir = gSystem->Getenv(
"VMCWORKDIR");
55 TString splitpars = BaseDir+
"/fsim/splitpars.dat";
59 TString OutputFile = Prefix+
"_fast.root";
63 Bool_t UseEvtGenDirect = kTRUE;
65 Bool_t UseBoxGenerator = kFALSE;
70 UseEvtGenDirect = kFALSE;
77 UseEvtGenDirect = kFALSE;
78 UseBoxGenerator = kTRUE;
97 FairRunSim *
fRun =
new FairRunSim();
98 fRun->SetOutputFile(OutputFile.Data());
99 fRun->SetGenerateRunInfo(kFALSE);
101 FairLogger::GetLogger()->SetLogToFile(kFALSE);
106 FairPrimaryGenerator*
primGen =
new FairPrimaryGenerator();
107 fRun->SetGenerator(primGen);
108 fRun->SetName(
"TGeant3");
112 FairBoxGenerator*
boxGen =
new FairBoxGenerator(Pdgcode, 1);
113 boxGen->SetPRange(MomMin,MomMax);
114 boxGen->SetPhiRange(0., 360.);
115 boxGen->SetThetaRange(0., 180.);
116 boxGen->SetXYZ(0., 0., 0.);
117 primGen->AddGenerator(boxGen);
127 primGen->AddGenerator(Dpm);
133 primGen->AddGenerator(EvtGen);
137 primGen->DoTracking(kFALSE);
141 fRun->SetField(fField);
209 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");
210 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");
211 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");
212 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");
217 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");
218 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");
219 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");
224 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");
232 fastSim->
AddDetector(
"ScVtxMvd",
"thtMin=5. thtMax=145. ptmin=0.1 vtxRes=0.005 efficiency=1.");
233 fastSim->
AddDetector(
"ScVtxNoMvd",
"thtMin=0. thtMax=5. ptmin=0.0 vtxRes=0.05 efficiency=1.");
237 fastSim->
AddDetector(
"ScVtxNoMvd",
"thtMin=0. thtMax=160. ptmin=0.1 vtxRes=0.1 efficiency=1.");
244 fastSim->
AddDetector(
"EmcFwCap",
"thtMin=10.0 thtMax=22.0 Emin=0.01 dist=2.5");
245 fastSim->
AddDetector(
"EmcBwCap",
"thtMin=142.0 thtMax=160.0 Emin=0.01 dist=0.7");
251 fastSim->
AddDetector(
"EmcBarrel",
"thtMin=22.0 thtMax=142.0 Emin=0.01 barrelRadius=0.5");
256 fastSim->
AddDetector(
"EmcFS",
"thtMin=0.05 thtMax=10.0 aPar=0.013 bPar=0.0283 Emin=0.01 dist=8.2");
265 fastSim->
AddDetector(
"SttPid",
"thtMin=7.8 thtMax=159.5 ptmin=0.1 dEdxRes=0.15 efficiency=1.");
266 fastSim->
AddDetector(
"ScMdtPidBarrel",
"thtMin=10.0 thtMax=130.0 pmin=0.5 efficiency=0.95 misId=0.01");
267 fastSim->
AddDetector(
"ScEmcPidFwCap",
"thtMin=10.0 thtMax=22.0 ptmin=0.0 pmin=0.0 efficiency=1.0");
268 fastSim->
AddDetector(
"ScEmcPidBwCap",
"thtMin=142.0 thtMax=160.0 ptmin=0.0 pmin=0.0 efficiency=1.0");
273 fastSim->
AddDetector(
"MvdPid",
"thtMin=5. thtMax=133.6 ptmin=0.1 dEdxResMulti=1. efficiency=1.");
278 fastSim->
AddDetector(
"ScEmcPidBarrel",
"thtMin=22.0 thtMax=142.0 ptmin=0.2 pmin=0.0 efficiency=1.0");
283 fastSim->
AddDetector(
"DrcBarrel",
"thtMin=22.0 thtMax=140.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
288 fastSim->
AddDetector(
"DrcDisc",
"thtMin=5.0 thtMax=22.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
293 fastSim->
AddDetector(
"ScEmcPidFS",
"thtMin=0.5 thtMax=10.0 ptmin=0.0 pmin=0.5 efficiency=1.0");
294 fastSim->
AddDetector(
"Rich",
"angleXMax=5.0 angleYMax=10.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
295 fastSim->
AddDetector(
"ScMdtPidForward",
"thtMin=0.0 thtMax=10.0 pmin=0.5 efficiency=0.95 misId=0.01");
299 fRun->AddTask(fastSim);
308 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
friend F32vec4 sqrt(const F32vec4 &a)
bool AddDetector(std::string name, std::string params="")
void SetUseFlatCov(bool v=true)
FairPrimaryGenerator * primGen
void SetUnstable(int pdg)
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)
void EnableElectronBremsstrahlung(bool brems=true)
bool EnableSplitoffs(std::string fname="splitpars.dat")
FairBoxGenerator * boxGen
void SetMultFilter(TString type, int min, int max=1000)
void SetVerbosity(int vb)
int simfast_opt(TString Prefix, TString Decfile, Float_t Mom, Int_t nEvents=1000, TString Resonance="pbarpSystem0", int Pdgcode=11, TString DetOpt="MvdGem EmcBar Drc Dsc FwdSpec")