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