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