FairRoot/PandaRoot
softrig/prod_fsim.C
Go to the documentation of this file.
1 // *******
2 // Macro for running fast simulation + soft trigger for softtrigger development
3 // *******
4 
5 // The parameters are
6 // -------------------
7 // prod_fsim.C+( <pref>, <decfile>, <mom>, [nevt], [res], [mode], [run], [full] )\n\n";
8 // <pref> : output file names prefix\n";
9 // <decfile> : decfile; 'DPM' uses DPM generator instead\n";
10 // <mom> : pbar momentum\n";
11 // [nevt] : number of events; default = 1000\n";
12 // [res] : resonance (ignored when running DPM); default = 'pbarpSystem0'\n";
13 // [mode] : mode code; default = 900 (->DPM code)\n";
14 // [run] : run number; should be set if mergeing output files from same mode; default = -1\n";
15 // [full] : apply full selection, defined in config file 'softrig/selection_fsim.cfg'; default = 0\n\n";
16 
17 // DetOpt : Parameter string to control detector setup for scrutiny process with some predefined options. For other configurations better use simfast.C
18 // Appearance of each parameter is a *positive* switch! Default value "MvdGem EmcBar Drc Dsc FwdSpec" represents complete detector.
19 // Detectors always being enabled are: EmcFwd, EmcBw, STT, Barrel MUO,
20 // - MvdGem (or 1) : Enable MVD and GEM for central tracking in addition to STT
21 // - EmcBarrel (or 2) : Enable EMC barrel for calorimetry (neutral detection and PID component)
22 // - Drc (or 3) : Enable Barrel DIRC for PID
23 // - Dsc (or 4) : Enable Disc DIRC for PID
24 // - FwdSpec (or 5) : Enable complete Forward Spectrometer (= Fwd Spec. EMC, Fwd Tracking, RICH, Fwd MUO)
25 
26 
27 
28 int prod_fsim(TString Prefix="", TString Decfile="", Float_t Mom=0., Int_t nEvents = 1000, TString Resonance="pbarpSystem0", int mode = 900, int run = -1, int applyfull=0 )
29 {
30  if (Prefix=="" || Decfile=="" || Mom==0.)
31  {
32  cout << "USAGE:\n";
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";
42  return;
43  }
44 
45  // if Mom<0, interprete as -E_cm
46  double mp = 0.938272;
47 
48  // if mom<0, it's -E_cm -> compute mom
49  if (Mom<0)
50  {
51  double X = (Mom*Mom-2*mp*mp)/(2*mp);
52  Mom = sqrt(X*X-mp*mp);
53  }
54 
55 
56  // Allow shortcut for resonance
57  if (Resonance=="pbp") Resonance = "pbarpSystem";
58  if (Resonance=="pbp0") Resonance = "pbarpSystem0";
59 
60  // Prevent generator from throwing a lot of warnings
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);
66 
67  //-----Evaluate Detector Setup ---------------------------------------
68  bool SwMvdGem = true; // Enable MVD and GEM for central tracking in addition to STT
69  bool SwEmcBar = true; // Enable EMC barrel for calorimetry (neutral detection and PID component)
70  bool SwDrc = true; // Enable Barrel DIRC for PID
71  bool SwDsc = true; // Enable Disc DIRC for PID
72  bool SwFwdSpec = true; // Enable complete Forward Spectrometer (= Fwd Spec. EMC, Fwd Tracking, RICH, Fwd MUO)
73 
74 // TString DetOpt="MvdGem EmcBar Drc Dsc FwdSpec"
75 // if (DetOpt.Contains("MvdGem") || DetOpt.Contains("1") ) SwMvdGem = true;
76 // if (DetOpt.Contains("EmcBar") || DetOpt.Contains("2") ) SwEmcBar = true;
77 // if (DetOpt.Contains("Drc") || DetOpt.Contains("3") ) SwDrc = true;
78 // if (DetOpt.Contains("Dsc") || DetOpt.Contains("4") ) SwDsc = true;
79 // if (DetOpt.Contains("FwdSpec") || DetOpt.Contains("5") ) SwFwdSpec = true;
80 
81  //----- Switches for Simulation Options ------------------------------
82  Bool_t enableSplitoff = true; // create e.-m. and hadronic split offs
83  Bool_t mergeNeutrals = true; // merge neutrals (for merged pi0s)
84  Bool_t electronBrems = true; // bremsstrahlung loss for electrons
85  Bool_t useEventFilter = false; // enable Fast Sim event filter. *** Needs configuration (see below) ***
86  Bool_t usePndEventFilter = false; // enable Panda event filter. *** Needs configuration (see below) ***
87 
88  //----- Presist simulation output ------------------------------
89  Bool_t persist = false; // we just want to keep SoftTrigger Output
90 
91  //-----General settings-----------------------------------------------
92  TString BaseDir = gSystem->Getenv("VMCWORKDIR");
93  TString splitpars = BaseDir+"/fsim/splitpars.dat";
94  gRandom->SetSeed();
95 
96  //-----User Settings:-------------------------------------------------
97  TString OutputFile = Prefix+"_fsim.root";
98  gDebug = 0;
99 
100  // choose your event generator
101  Bool_t UseEvtGenDirect = kTRUE;
102  Bool_t UseFtf = kFALSE;
103  Bool_t UseDpm = kFALSE;
104  Bool_t UseBoxGenerator = kFALSE;
105 
106  // use DPM generator; default: inelastic @ pbarmom = mom
107  if (Decfile.BeginsWith("DPM"))
108  {
109  UseEvtGenDirect = kFALSE;
110  UseDpm = kTRUE;
111  }
112 
113  // use FTF generator;
114  if (Decfile.BeginsWith("FTF"))
115  {
116  UseEvtGenDirect = kFALSE;
117  UseFtf = kTRUE;
118  }
119 
120  // use BOX generator; default: single mu-, 0<tht<180, 0<phi<360, 0.1<p<mom
121  if (Decfile=="BOX")
122  {
123  UseEvtGenDirect = kFALSE;
124  UseBoxGenerator = kTRUE;
125  }
126 
127  usePndEventFilter=UseDpm;
128 
129  Double_t MomMin = 0.1; // minimum momentum for box generator
130  Double_t MomMax = Mom; // maximum " "
131 
132  // Start a stop watch
133  TStopwatch timer;
134  timer.Start();
135 
136  // Create the Simulation run manager
137  // --------------------------------
138  FairRunSim *fRun = new FairRunSim();
139  fRun->SetOutputFile(OutputFile.Data());
140  fRun->SetGenerateRunInfo(kFALSE);
141  fRun->SetUserConfig(BaseDir+"/macro/softrig/g3ConfigNoMC.C"); // this prevents storing the MCTracks array
142 
143  FairLogger::GetLogger()->SetLogToFile(kFALSE);
144 
145 
146  // Create and Set Event Generator
147  // -------------------------------
149  //FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
150  fRun->SetGenerator(primGen);
151  fRun->SetName("TGeant3");
152 
153  if(UseBoxGenerator)
154  { // Box Generator
155  FairBoxGenerator* boxGen = new FairBoxGenerator(Pdgcode, 1); // 211 = pion; 1 = multipl.
156  boxGen->SetPRange(MomMin,MomMax); // GeV/c
157  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
158  boxGen->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
159  boxGen->SetXYZ(0., 0., 0.); //cm
160  primGen->AddGenerator(boxGen);
161  }
162  if(UseDpm)
163  {
164  int dpmmode = 0;
165  if (Decfile=="DPM1") dpmmode = 1;
166  if (Decfile=="DPM2") dpmmode = 2;
167 
168  PndDpmDirect *Dpm= new PndDpmDirect(Mom,dpmmode); // 0 = inelastic, 1 = inelastic & elastic, 2 = elastic
169  Dpm->SetUnstable(111); // pi0
170  Dpm->SetUnstable(310); // K_S0
171  Dpm->SetStable(3122); // Lambda
172  Dpm->SetStable(-3122); // anti-Lambda
173  Dpm->SetStable(3222); // Sigma
174  Dpm->SetStable(-3222); // anti-Sigma
175  Dpm->SetUnstable(221); // eta
176  primGen->AddGenerator(Dpm);
177  }
178  if(UseFtf)
179  {
180  bool noelastic = true;
181  if (Decfile=="FTF1") noelastic=false;
182  PndFtfDirect *Ftf = new PndFtfDirect("anti_proton", "G4_H", 1, "ftfp", Mom, 0, noelastic);
183  primGen->AddGenerator(Ftf);
184  }
185  if(UseEvtGenDirect)
186  {
187  PndEvtGenDirect *EvtGen = new PndEvtGenDirect(Resonance, Decfile.Data(), Mom);
188  EvtGen->SetStoreTree(kTRUE);
189  primGen->AddGenerator(EvtGen);
190  }
191 
192  // ------------- switch off the transport of particles
193  primGen->DoTracking(kFALSE);
194 
195  //---------------------Create and Set the Field(s)----------
196  PndMultiField *fField= new PndMultiField("AUTO");
197  fRun->SetField(fField);
198 
199 
200  // ********************************
201  // Setup the Fast Simulation Task
202  // ********************************
203 
204  PndFastSim* fastSim = new PndFastSim(persist);
205 
206  // increasing verbosity increases the amount of console output (mainly for debugging)
207  fastSim->SetVerbosity(0);
208 
209  //-----------------------------
210  // set PANDA event filters
211  //-----------------------------
212  if (mode==900) usePndEventFilter=true; // switch on filter for background events
213  if (usePndEventFilter)
214  {
215  primGen->SetFilterMaxTries(100000); // for testing small number, for real produrction set usually to 9999999 or something very big
217  // new FairEvtFilterOnSingleParticleCounts named "PdgFilter"
218  lambfilt->AndMaxPdgCodes(0, 3122, -3122); // filter out Lambda0
219  lambfilt->AndMaxPdgCodes(0, 3222, -3222); // filter out Sigma+
220  primGen->AndFilter(lambfilt);
221  }
222 
223  //-----------------------------
224  // set event filters
225  //-----------------------------
226  if (useEventFilter)
227  {
228  // Filters are:
229  // -----------
230  // fastSim->SetMultFilter(type, min, max);
231  // requires min <= mult <= max
232 
233  // available types are:
234 
235  // "+" : positive charged particles
236  // "-" : negative charged particles
237  // "gam" : gammas
238  // "pi0" : pi0 candidates ( -> 2 gammas); mass window 0.135 +- 0.03 GeV
239  // "eta" : eta candidates ( -> 2 gammas); mass window 0.547 +- 0.04 GeV
240  // "ks" : K_S candidates ( -> pi+ pi-); mass window 0.497 +- 0.04 GeV
241 
242 // fastSim->SetMultFilter("+", 2,1000); // at least 2 trk+
243 // fastSim->SetMultFilter("-", 2,1000); // at least 2 trk-
244 // fastSim->SetMultFilter("gam", 0, 4); // at most 4 gammas
245 
246  // fastSim->SetInvMassFilter(comb, m_min, m_max, mult);
247 
248  // requires at least mult combined candidates with m_min < m < m_max
249 
250  // comb is a TString describing the combinatoric
251  // - particle codes are: e+ e- mu+ mu- pi+ pi- k+ k- p+ p- gam pi0 ks eta
252  // - codes must be separated with a single blank
253  // - for charged final states only the mass is set; no pdg code selection is done!
254  // - optional a 'cc' added at the end of also takes into account charge conjugation
255 
256  // Examples:
257  // - ("k+ k-", 0.98, 1.1, 2) : forms K+ K- candidate and requires >=2 in the given window
258  // - ("ks k+ pi- cc", 2.8, 3.2,1 ) : forms ks k+ pi- / ks k- pi+ cands and req. at least one in window
259 
260  fastSim->SetInvMassFilter("e+ e-",2.8,3.3,1); // look for J/psi -> e+ e- candidate
261  }
262 
263  // enable the merging of neutrals if they have similar direction
264  //-----------------------------
265  fastSim->MergeNeutralClusters(mergeNeutrals);
266 
267  // enable bremsstahlung loss for electrons
268  //-----------------------------
269  fastSim->EnableElectronBremsstrahlung(electronBrems);
270 
271  //enable the producting of parametrized neutral (hadronic) split offs
272  // generate electro-magnetic / hadronic split offs in the EMC? switch off when running w/o EMC
273 
274  if (enableSplitoff)
275  fastSim->EnableSplitoffs(splitpars.Data());
276 
277  fastSim->SetUseFlatCov(true);
278  // -----------------------------------------------------------------------------------
279  //Tracking: Set up in parts of theta coverage. All modelled by PndFsmSimpleTracker.
280  // Mind: Numbers on resolution (pRes,thtRes,phiRes) and efficiency are guessed
281  // -----------------------------------------------------------------------------------
282  if (SwMvdGem) // MVD and GEM are enabled; combined tracking available
283  {
284  // - (Full Panda Tracking: STT MVD GEM FTS)
285 
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");
290  }
291  else // MVD and GEM are disabled; only STT tracking in central region
292  {
293  // - STT alone:
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");
297  }
298 
299  if (SwFwdSpec) // Fwd spectrometer enabled -> use Fwd tracking system
300  {
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");
302  }
303 
304  // -----------------------------------------------------------------------------------
305  // Vertexing
306  // -----------------------------------------------------------------------------------
307  if (SwMvdGem) // MVD and GEM are enabled -> better vertexing in central region
308  {
309  fastSim->AddDetector("ScVtxMvd", "thtMin=5. thtMax=145. ptmin=0.1 vtxRes=0.005 efficiency=1."); // efficiency=1: all tracks found in trackers will get a vertex information
310  fastSim->AddDetector("ScVtxNoMvd", "thtMin=0. thtMax=5. ptmin=0.0 vtxRes=0.05 efficiency=1."); // efficiency=1: all tracks found in trackers will get a vertex information
311  }
312  else // MVD and GEM are disabled -> no good vertexing at all
313  {
314  fastSim->AddDetector("ScVtxNoMvd", "thtMin=0. thtMax=160. ptmin=0.1 vtxRes=0.1 efficiency=1."); // efficiency=1: all tracks found in trackers will get a vertex information
315  }
316  // -----------------------------------------------------------------------------------
317  // EM Calorimeters w/ default parameters
318  // (don't have to be set, just to list the available parameters
319  // -----------------------------------------------------------------------------------
320 
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");
323 
324  if (SwEmcBar)
325  {
326  // EmcBarrel also allows to set phiMin and phiMax and can be added multiple times as EmcBarrel1, EmcBarrel2, etc.
327  // Should be made constistent with EmcPidBarrel below
328  fastSim->AddDetector("EmcBarrel","thtMin=22.0 thtMax=142.0 Emin=0.01 barrelRadius=0.5");
329  }
330 
331  if (SwFwdSpec) // Fwd spectrometer enabled -> use Fwd EMC
332  {
333  fastSim->AddDetector("EmcFS", "thtMin=0.05 thtMax=10.0 aPar=0.013 bPar=0.0283 Emin=0.01 dist=8.2");
334  }
335 
336  // -----------------------------------------------------------------------------------
337  // PID
338  // -----------------------------------------------------------------------------------
339 
340  // PID detectors being always in: STT, MUO Barrel, EMC FwdCap, EMC BwdCap
341  //Note: A dEdX parametrization from 2008
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");
346 
347  if (SwMvdGem) // MVD and GEM are enabled -> MVD PID available
348  {
349  //Note: A Bethe-Bloch-Landau-Gauss Prametrization from 2008
350  fastSim->AddDetector("MvdPid","thtMin=5. thtMax=133.6 ptmin=0.1 dEdxResMulti=1. efficiency=1.");
351  }
352 
353  if (SwEmcBar) // EMC Barrel enable -> EMC barrel PID available
354  {
355  fastSim->AddDetector("ScEmcPidBarrel", "thtMin=22.0 thtMax=142.0 ptmin=0.2 pmin=0.0 efficiency=1.0");
356  }
357 
358  if (SwDrc) // Barrel DIRC enabled
359  {
360  fastSim->AddDetector("DrcBarrel","thtMin=22.0 thtMax=140.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
361  }
362 
363  if (SwDsc) // Disc DIRC enabled
364  {
365  fastSim->AddDetector("DrcDisc","thtMin=5.0 thtMax=22.0 dthtc=0.01 nPhotMin=5 effNPhotons=0.075");
366  }
367 
368  if (SwFwdSpec) // Fwd spectrometer enabled -> use RICH, FwdMUO and EMC FS
369  {
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");
373  }
374 
375 
376  fRun->AddTask(fastSim);
377 
378  // ***********************
379  // *** SoftTriggerTask ***
380  // ***********************
381 
382  // mode code:
383  // -> signals should have 9-digit code (e.g. 450110002; 450 = 4.5 GeV, 110 = triggerline, 002 = recoil type in decfile)
384  // -> DPM has 6-digits (550900; 550 = 5.5 GeV, 900 = mode code for DPM)
385  int modeshort = mode;
386  if (modeshort>1000000) modeshort /= 1000;
387  if (modeshort>1000) modeshort %= 1000;
388 
389  cout <<" ****** mode:"<<mode<<" modeshort:"<<modeshort<<endl;
390 
391  PndSoftTriggerTask *stTask = new PndSoftTriggerTask(Mom, mode, run, BaseDir+"/softrig/triggerlines_fsim.cfg");
392  stTask->SetFastSimDefaults();
393  stTask->ApplyFullSelection(applyfull); // apply selection defined in 'TString selectioncfg'
394 
395  if (modeshort==900) // for DPM/FTF events
396  {
397  stTask->SetQAAll(true); // -> write all QA tuples
398  }
399  else // for signal mode
400  {
401  stTask->SetQAAll(false);
402  stTask->SetQAMode(modeshort); // -> only write signal n-tuple
403  stTask->SetQAMctOnly(); // -> only keep signals with mct match in QA tuple
404  }
405 
406  if (applyfull) stTask->SetQAAll(false); // in full selection mode don't create QA output
407 
408  stTask->SetQAEvent(true); // event info
409 
410  fRun->AddTask(stTask);
411 
412  // ***********************
413  // *** SoftTriggerTask ***
414  // ***********************
415 
416  //------------------------- Initialize the RUN -----------------
417  fRun->Init();
418 
419  //------------------------- Run the Simulation -----------------
420  fRun->Run(nEvents);
421 
422  //------------------------- Write Filter Info to File -----------
423  if (usePndEventFilter) primGen->WriteEvtFilterStatsToRootFile();
424 
425  //------------------------Print some info and exit----------------
426  timer.Stop();
427  Double_t rtime = timer.RealTime();
428  Double_t ctime = timer.CpuTime();
429  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
430  return 0;
431 }
432 
int prod_fsim(TString Prefix="", TString Decfile="", Float_t Mom=0., Int_t nEvents=1000, TString Resonance="pbarpSystem0", int mode=900, int run=-1, int applyfull=0)
Bool_t AndMaxPdgCodes(Int_t max, std::vector< Int_t > &pdgCodes)
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Int_t run
Definition: autocutx.C:47
void WriteEvtFilterStatsToRootFile(TFile *outputFile=NULL)
Writes all relevant event filter information to the output root file.
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
void AndFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical AND to connect with previously defined non-veto even...
bool AddDetector(std::string name, std::string params="")
Definition: PndFastSim.cxx:313
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...
static const double mp
Definition: mzparameters.h:11
void SetUseFlatCov(bool v=true)
Definition: PndFastSim.h:64
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
Int_t mode
Definition: autocutx.C:47
void SetUnstable(int pdg)
void SetStable(int pdg)
Primary generator with added event filtering capabilities.
bool MergeNeutralClusters(bool merge=true, double par=0.389)
Definition: PndFastSim.h:61
void SetInvMassFilter(TString filter, double min, double max, int mult=1)
Definition: PndFastSim.cxx:373
void SetStoreTree(Bool_t store=true)
Double_t
void EnableElectronBremsstrahlung(bool brems=true)
Definition: PndFastSim.h:62
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
void SetQAMctOnly(bool qa=true)
gDebug
Definition: sim_emc_apd.C:6
bool EnableSplitoffs(std::string fname="splitpars.dat")
Definition: PndFastSim.cxx:224
Double_t ctime
Definition: hit_dirc.C:114
void SetQAMode(int mode, bool qa=true)
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
double X
Definition: anaLmdDigi.C:68
void SetVerbosity(int vb)
Definition: PndFastSim.h:59
TLorentzVector fIni
Definition: full_core_ntp.C:29
Double_t rtime
Definition: hit_dirc.C:113
void ApplyFullSelection(int selmode=1)