FairRoot/PandaRoot
QA/lmd/sim_LMD.C
Go to the documentation of this file.
1 //###################################
2 // # Lmd DPM-Direct Sim macro
3 // # for DPM+FairPrimaryGenerator generation
4 // # 23/07/2015
5 // # author: A.Karavdina
6 //###################################
7 int sim_LMD(const int nEvents=1000, const int startEvent=0, const double mom=1.5, TString storePath="",
8  const int verboseLevel=0, const int seed=3267, const int mode = 1, const double th_min = 0.12)
9 {
10  TStopwatch timer;
11  timer.Start();
12  gDebug=0;
13 
14  //output1
15  TString simOutput=storePath+"Lumi_MC_";
16  simOutput += startEvent;
17  simOutput += ".root";
18  TString parOutput=storePath+"Lumi_Params_";
19  parOutput += startEvent;
20  parOutput += ".root";
21 
22  FairRunSim *fRun = new FairRunSim();
23 
24  //set the MC version used
25  fRun->SetName("TGeant4");
26  //fRun->SetName("TGeant3");
27 
28  fRun->SetOutputFile(simOutput);
29 
30 
31  //set material
32  fRun->SetMaterials("media_pnd.geo");
33 
34  // // //create and add detectors
35 // // //------------------------- CAVE -----------------
36 
37  FairModule *Cave= new PndCave("CAVE");
38  Cave->SetGeometryFileName("pndcave.geo");
39  fRun->AddModule(Cave);
40  //------------------------- Magnet -----------------
41 // FairModule *Magnet= new PndMagnet("MAGNET");
42 // Magnet->SetGeometryFileName("FullSolenoid_V842.root");
43 // fRun->AddModule(Magnet);
44  FairModule *Dipole= new PndMagnet("MAGNET");
45  Dipole->SetGeometryFileName("dipole.geo");
46  fRun->AddModule(Dipole);
47  //------------------------- Pipe -----------------
48  FairModule *Pipe= new PndPipe("PIPE");
49  Pipe->SetGeometryFileName("beampipe_201407.root");
50  fRun->AddModule(Pipe);
51 
52  PndMdt *Muo = new PndMdt("MDT",kFALSE);
53  Muo->SetBarrel("fast");
54  Muo->SetEndcap("fast");
55  Muo->SetMuonFilter("fast");
56  Muo->SetForward("fast");
57  Muo->SetMdtMagnet(kTRUE);
58  Muo->SetMdtCoil(kTRUE);
59  Muo->SetMdtMFIron(kTRUE);
60  fRun->AddModule(Muo);
61 
62  //------------------------- LMD -----------------
63  PndLmdDetector *Lum = new PndLmdDetector("LUM", kTRUE);
64  Lum->SetExclusiveSensorType("LumActive"); //ignore MVD
65  Lum->SetGeometryFileName("Luminosity-Detector.root");
67  fRun->AddModule(Lum);
68 
69 
70  //particle generator
71  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
72 
73  //DPM
75  primGen->AddGenerator(dpmGen);
76  fRun->SetGenerator(primGen);
77 
78  //reading the new field map in the old format
79  fRun->SetBeamMom(mom);
80 
81  PndMultiField *fField= new PndMultiField("AUTO");
82  fRun->SetField(fField);
83 
84  if(nEvents<10)
85  fRun->SetStoreTraj(kTRUE); // toggle this for use with EVE
86  else
87  fRun->SetStoreTraj(kFALSE);
88 
89 
90  //FairLogger
91  // get handle
92  FairLogger *logger = FairLogger::GetLogger();
93  //
94  // log to screen and to file
95  logger->SetLogToScreen(kTRUE);
96  logger->SetLogToFile(kFALSE);
97 
98  logger->SetLogVerbosityLevel("LOW");
99 
100  // Set different levels of verbosity. In the example everything >=INFO goes to the
101  // file and everything >= ERROR is printed on the screen
102  // LogLevels are (FATAL, ERROR, WARNING, INFO, DEBUG, DEBUG1, DEBUG2, DEBUG3, DEBUG4)
103  logger->SetLogScreenLevel("ERROR"); //Only FATAL and ERROR to screen
104 
105  fRun->Init();
106 
107 
108  // // Fill the Parameter containers for this run
109  // //-------------------------------------------
110  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
111  Bool_t kParameterMerged=kTRUE;
112  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
113  output->open(parOutput.Data(),"RECREATE");
114  rtdb->setOutput(output);
115 
116 
117  // Transport nEvents
118  // -----------------
119 
120  fRun->Run(nEvents);
121 
122  rtdb->saveOutput();
123  rtdb->print();
124 
125 
126  timer.Stop();
127  Double_t rtime = timer.RealTime();
128  Double_t ctime = timer.CpuTime();
129  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
130 
131  cout << " Test passed" << endl;
132  cout << " All ok " << endl;
133  return 0;
134 
135 }
PndMultiField * fField
Definition: sim_emc_apd.C:97
void SetForward(TString name)
Definition: PndMdt.h:34
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
int verboseLevel
Definition: Lars/runMvdSim.C:7
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetExclusiveSensorType(const TString sens)
PndDpmGenerator * dpmGen
void SetMdtCoil(bool opt=false)
Definition: PndMdt.h:28
Int_t startEvent
void SetMdtMFIron(bool opt=false)
Definition: PndMdt.h:29
TString storePath
Double_t mom
Definition: plot_dirc.C:14
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
PndMdt * Muo
Definition: sim_emc_apd.C:67
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
TString parOutput
FairRunAna * fRun
Definition: hit_dirc.C:58
Int_t mode
Definition: autocutx.C:47
void SetMdtMagnet(bool opt=false)
Definition: PndMdt.h:27
Double_t
FairModule * Dipole
Definition: sim_emc_apd.C:40
FairModule * Cave
Definition: sim_emc_apd.C:32
Int_t nEvents
Definition: hit_dirc.C:11
unsigned int seed
TStopwatch timer
Definition: hit_dirc.C:51
void SetBarrel(TString name)
Definition: PndMdt.h:31
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
int sim_LMD(const int nEvents=1000, const int startEvent=0, const double mom=1.5, TString storePath="", const int verboseLevel=0, const int seed=3267, const int mode=1, const double th_min=0.12)
Definition: QA/lmd/sim_LMD.C:7
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
void SetEndcap(TString name)
Definition: PndMdt.h:32
void SetMuonFilter(TString name)
Definition: PndMdt.h:33
TString simOutput
Definition: PndMdt.h:20
void SetVerboseLevel(Int_t level)
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
Definition: PndCave.h:8