FairRoot/PandaRoot
run_EvtGenSim.C
Go to the documentation of this file.
1 // Macro for running Cbm with Geant3 or Geant4 (M. Al-Turany , D. Bertini)
2 // Modified 22/06/2005 D.Bertini
3 {
4  TStopwatch timer;
5  timer.Start();
6  gDebug=0;
7  // Load basic libraries
8  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
9  gSystem->Load("libEnDrc"); // our library
10 
11  FairRunSim *fRun = new FairRunSim();
12 
13  // set the MC version used
14  // ------------------------
15 
16  fRun->SetName("TGeant3");
17  // Choose the Geant Navigation System
18  // fRun->SetGeoModel("G3Native");
19 
20  fRun->SetOutputFile("testsimu10.root");
21 
22 
23  // Set Material file Name
24  //-----------------------
25 
26  fRun->SetMaterials("media_pnd.geo");
27 
28  // Create and add detectors
29  //-------------------------
30 
31  FairModule *Cave= new PndCave("CAVE");
32  Cave->SetGeometryFileName("pndcave.geo");
33  fRun->AddModule(Cave);
34 
35 // FairModule *Magnet= new PndMagnet("MAGNET");
36 // Magnet->SetGeometryFileName("magnet.geo");
37 // fRun->AddModule(Magnet);
38 
39 
40 // FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
41 // Mvd->SetGeometryFileName("MVD14.root");
42 // fRun->AddModule(Mvd);
43 
44 
45 // FairDetector *PndTpc = new PndTpcDetector("TPC", kTRUE);
46 // PndTpc->SetGeometryFileName("tpc.geo");
47 // fRun->AddModule(PndTpc);
48 
49 
50 // FairDetector *Emc = new PndEmc("EMC",kTRUE);
51 // Emc->SetGeometryFileName("emc_module12345.dat");
52 // //Emc->SetGeometryFileName("emc_module3.root");
53 // fRun->AddModule(Emc);
54 // // FairDetector *Muo = new PndMuo("MUO",kTRUE);
55 // // Muo->SetGeometryFileName("muon_super_light2.geo");
56 // // fRun->AddModule(Muo);
57 
58 
59  FairDetector *Drc = new PndDrc("DIRC", kTRUE);
60  Drc->SetGeometryFileName("dirc.geo");
61  fRun->AddModule(Drc);
62 
63 
64  //And add the enddrc
65  FairDetector* Dsk = new PndEnDrc("EDRC", kTRUE);
66  Dsk->SetGeometryFileName("endrc.root");
67  fRun->AddModule(Dsk);
68 
69  // Create and Set Event Generator
70  //-------------------------------
71 
72  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
73  fRun->SetGenerator(primGen);
74 
75  // Urqmd Generator
76  // FairUrqmdGenerator* urqmdGen = new FairUrqmdGenerator("../../input/00-03fm.100ev.f14");
77  // primGen->AddGenerator(urqmdGen);
78 
79  // Particle Generator
80  FairEvtGenGenerator* partGen = new FairEvtGenGenerator("/home/dglazier/panda/pandaroot/pgenerators/EvtGen/output.evt");
81  primGen->AddGenerator(partGen);
82 
83  // Box Generator
84 
85  //
86  fRun->SetStoreTraj(kTRUE);
87 
89 
90  PndTransMap *map= new PndTransMap("TransMap", "R");
91  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
92  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
93  fField->AddField(map);
94  fField->AddField(map1);
95  fField->AddField(map2);
96 
97  //magnetic field
98  /* PndConstField *fMagField=new PndConstField();
99  fMagField->SetField(0.,0.,20.); // values are in kG
100  fMagField->SetFieldRegion(-50, 50,-50, 50, -100, 100);// values are in cm (xmin,xmax,ymin,ymax,zmin,zmax)
101  fField->AddField(fMagField);
102  */
103  fRun->SetField(fField);
104 
105 
106 
107  fRun->Init();
108 
109  // -Trajectories Visualization
110  // ----------------------------
111  FairTrajFilter* trajFilter = FairTrajFilter::Instance();
112  // Set cuts for storing the trajectpries
113  trajFilter->SetStepSizeCut(0.01); // 1 cm
114 // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
115 // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
116 // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
117  trajFilter->SetStorePrimaries(kTRUE);
118  trajFilter->SetStoreSecondaries(kTRUE);
119 
120 //
121 // // Fill the Parameter containers for this run
122 // //-------------------------------------------
123 //
124  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
126 
127 
128 
129 
130  //if a field is used save the parameters in the RTDB
131 /*
132  PndSolenoidPar* Par1 = (PndSolenoidPar*) rtdb->getContainer("PndSolenoidPar");
133  if ( map2 ) { Par1->SetParameters(map2); }
134  Par1->setChanged();
135  Par1->setInputVersion(fRun->GetRunId(),1);
136 
137  PndDipolePar* Par2 = (PndDipolePar*) rtdb->getContainer("PndDipolePar");
138  if (map1 ) { Par2->SetParameters(map1); }
139  Par2->setInputVersion(fRun->GetRunId(),1);
140  Par2->setChanged();
141 
142  PndTransPar* Par3 = (PndTransPar*) rtdb->getContainer("PndTransPar");
143  if (map ) { Par3->SetParameters(map); }
144  Par3->setInputVersion(fRun->GetRunId(),1);
145  Par3->setChanged();
146  */
147 
148  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
149  if (fField) { Par->SetParameters(fField); }
150  Par->setInputVersion(fRun->GetRunId(),1);
151  Par->setChanged();
152 
153  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
154  output->open("testparams.root");
155  rtdb->setOutput(output);
156  rtdb->saveOutput();
157  rtdb->print();
158  // Transport nEvents
159  // -----------------1
160 
161  Int_t nEvents = 10;
162  fRun->Run(nEvents);
163 
164  timer.Stop();
165 
166  Double_t rtime = timer.RealTime();
167  Double_t ctime = timer.CpuTime();
168  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
169 
170  cout << " Test passed" << endl;
171  cout << " All ok " << endl;
172  exit(0);
173 
174 }
175 
FairTrajFilter * trajFilter
Definition: run_DpmSim.C:112
PndDrc * Drc
Definition: sim_emc_apd.C:75
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
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndTransMap * map
Definition: sim_emc_apd.C:99
exit(0)
PndHypBupGenerator * partGen
Definition: runSimHF_ptr.C:144
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairDetector * Dsk
Definition: run_DpmSim.C:66
FairRunAna * fRun
Definition: hit_dirc.C:58
Double_t
FairModule * Cave
Definition: sim_emc_apd.C:32
Definition: PndDrc.h:31
Int_t nEvents
Definition: hit_dirc.C:11
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
new FairTrajFilter()
PndDipoleMap * map1
Definition: sim_emc_apd.C:100
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
void AddField(FairField *field)
Double_t rtime
Definition: hit_dirc.C:113
Definition: PndCave.h:8