FairRoot/PandaRoot
run_sim_tpcmvd.C
Go to the documentation of this file.
1 int run_sim_tpcmvd(Int_t nEvents=1000, Float_t pT=1.0, UInt_t seed=0){
2 
3  gRandom->SetSeed(seed);
4 
5  TStopwatch timer;
6  timer.Start();
7  gDebug=0;
8  // Load basic libraries
9  gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
10  basiclibs();
11 
12  // Load this example libraries
13  gSystem->Load("libGeoBase");
14  gSystem->Load("libParBase");
15  gSystem->Load("libBase");
16  gSystem->Load("libPndData");
17  gSystem->Load("libField");
18  gSystem->Load("libPassive");
19  gSystem->Load("libGen");
20  gSystem->Load("libEmc");
21  gSystem->Load("libgenfit");
22  gSystem->Load("libtpc");
23  gSystem->Load("libtpcreco");
24  gSystem->Load("libtrackrep");
25  gSystem->Load("librecotasks");
26  gSystem->Load("libMvd");
27  gSystem->Load("libMvdReco");
28  gSystem->Load("libLHETrack");
29 
30 
31  FairRunSim *fRun = new FairRunSim();
32 
33  // set the MC version used
34  // ------------------------
35 
36  fRun->SetName("TGeant3");
37  // Choose the Geant Navigation System
38  // fRun->SetGeoModel("G3Native");
39 
40  fRun->SetOutputFile("points_tpcmvdemc.root");
41 
42  // Set Material file Name
43  //-----------------------
44 
45  fRun->SetMaterials("media_pnd.geo");
46 
47  // Create and add detectors
48  //-------------------------
49 
50  FairModule *Cave= new PndCave("CAVE");
51  Cave->SetGeometryFileName("pndcave.geo");
52  fRun->AddModule(Cave);
53 
54  FairModule *Magnet= new PndMagnet("MAGNET");
55  Magnet->SetGeometryFileName("magnet.geo");
56  fRun->AddModule(Magnet);
57 
58  FairModule *Pipe= new PndPipe("PIPE");
59  Pipe->SetGeometryFileName("pipebeamtarget.geo");
60  fRun->AddModule(Pipe);
61 
62  FairDetector *Tpc = new PndTpcDetector("TPC", kTRUE);
63  Tpc->SetGeometryFileName("tpc.geo");
64  fRun->AddModule(Tpc);
65 
66  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
67  Mvd->SetGeometryFileName("MVD14.root");
68  fRun->AddModule(Mvd);
69 
70  PndEmc *Emc = new PndEmc("EMC",kTRUE);
71  Emc->SetGeometryFileNameDouble("emc_module1245.dat","emc_module3new.root");
72  fRun->AddModule(Emc);
73 
74  // FairDetector *Tof = new PndTof("TOF",kTRUE);
75  // Tof->SetGeometryFileName("tofSciF.geo");
76  // fRun->AddModule(Tof);
77 
78  // FairDetector *Muo = new PndMuo("MUO",kTRUE);
79  // Muo->SetGeometryFileName("muon_newmag.geo");
80  // fRun->AddModule(Muo);
81 
82  // FairDetector *Drc = new PndDrc("DIRC", kTRUE);
83  // Drc->SetGeometryFileName("dirc.geo");
84  // fRun->AddModule(Drc);
85 
86  // FairDetector *Dch = new PndDchDetector("DCH", kTRUE);
87  // Dch->SetGeometryFileName("dch.root");
88  // fRun->AddModule(Dch);
89 
90  // Create and Set Event Generator
91  //-------------------------------
92 
93  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
94  fRun->SetGenerator(primGen);
95 
96  // Box Generator
97  FairBoxGenerator* boxGen = new FairBoxGenerator(13, 1); // 13 = muon; 1 = multipl.
98  // boxGen->SetPRange(1.,1.1); // GeV/c
99  boxGen->SetPtRange(pT,pT); // GeV/c
100  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
101  boxGen->SetThetaRange(0., 90.); // Polar angle in lab system range [degree]
102  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
103  primGen->AddGenerator(boxGen);
104 
105  fRun->SetStoreTraj(kTRUE);
106 
108 
109  PndTransMap *map= new PndTransMap("TransMap", "R");
110  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
111  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
112  fField->AddField(map);
113  fField->AddField(map1);
114  fField->AddField(map2);
115 
116  //magnetic field
117  /* PndConstField *fMagField=new PndConstField();
118  fMagField->SetField(0.,0.,20.); // values are in kG
119  fMagField->SetFieldRegion(-50, 50,-50, 50, -100, 100);// values are in cm (xmin,xmax,ymin,ymax,zmin,zmax)
120  fField->AddField(fMagField);
121  */
122  fRun->SetField(fField);
123 
124  fRun->Init();
125  /*
126  // -Trajectories Visualization
127  // ----------------------------
128  FairTrajFilter* trajFilter = FairTrajFilter::Instance();
129  // Set cuts for storing the trajectories
130  trajFilter->SetStepSizeCut(0.01); // 1 cm
131  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
132  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
133  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
134  trajFilter->SetStorePrimaries(kTRUE);
135  trajFilter->SetStoreSecondaries(kTRUE);
136  */
137  //
138  // // Fill the Parameter containers for this run
139  // //-------------------------------------------
140  //
141  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
142  Bool_t kParameterMerged=kTRUE;
143 
144  //if a field is used save the parameters in the RTDB
145  /*
146  PndSolenoidPar* Par1 = (PndSolenoidPar*) rtdb->getContainer("PndSolenoidPar");
147  if ( map2 ) { Par1->SetParameters(map2); }
148  Par1->setChanged();
149  Par1->setInputVersion(fRun->GetRunId(),1);
150 
151  PndDipolePar* Par2 = (PndDipolePar*) rtdb->getContainer("PndDipolePar");
152  if (map1 ) { Par2->SetParameters(map1); }
153  Par2->setInputVersion(fRun->GetRunId(),1);
154  Par2->setChanged();
155 
156  PndTransPar* Par3 = (PndTransPar*) rtdb->getContainer("PndTransPar");
157  if (map ) { Par3->SetParameters(map); }
158  Par3->setInputVersion(fRun->GetRunId(),1);
159  Par3->setChanged();
160  */
161 
162  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
163  if (fField) { Par->SetParameters(fField); }
164  Par->setInputVersion(fRun->GetRunId(),1);
165  Par->setChanged();
166 
167  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
168  output->open("testparams.root");
169  rtdb->setOutput(output);
170  rtdb->saveOutput();
171  rtdb->print();
172 
173  fRun->Run(nEvents);
174 
175  timer.Stop();
176 
177  Double_t rtime = timer.RealTime();
178  Double_t ctime = timer.CpuTime();
179  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
180 
181  cout << " Test passed" << endl;
182  cout << " All ok " << endl;
183  return 0;
184 
185 }
186 
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
PndSolenoidMap * map2
Definition: sim_emc_apd.C:101
basiclibs()
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndTransMap * map
Definition: sim_emc_apd.C:99
PndEmc * Emc
Definition: sim_emc_apd.C:55
FairDetector * Mvd
Definition: sim_emc_apd.C:51
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
Double_t
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
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
FairDetector * Tpc
PndDipoleMap * map1
Definition: sim_emc_apd.C:100
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
int run_sim_tpcmvd(Int_t nEvents=1000, Float_t pT=1.0, UInt_t seed=0)
Definition: run_sim_tpcmvd.C:1
void AddField(FairField *field)
virtual void SetGeometryFileNameDouble(TString fname, TString fname2, Int_t fwbwchoice=0, TString geoVer="0")
Definition: PndEmc.cxx:1096
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
FairModule * Magnet
Definition: sim_emc_apd.C:36
Definition: PndCave.h:8