FairRoot/PandaRoot
QAmacro_sim_G3.C
Go to the documentation of this file.
1 // Macro for running Simulation of the Full Panda Detector with Geant3 (M. Al-Turany )
2 // Modified 13/02/2009
3 {
4  TStopwatch timer;
5  timer.Start();
6  gDebug=0;
7  FairRunSim *fRun = new FairRunSim();
8  // set the MC version used
9  // ------------------------
10  fRun->SetName("TGeant3");
11 
12  fRun->SetOutputFile("simfullG3.root");
13 
14  // Set Material file Name
15  //-----------------------
16  fRun->SetMaterials("media_pnd.geo");
17  // Create and add detectors
18  //-------------------------
19  FairModule *Cave= new PndCave("CAVE");
20  Cave->SetGeometryFileName("pndcave.geo");
21  fRun->AddModule(Cave);
22 
23  FairModule *Magnet= new PndMagnet("MAGNET");
24  Magnet->SetGeometryFileName("FullSolenoid.root");
25  fRun->AddModule(Magnet);
26 
27  FairModule *Dipole= new PndMagnet("MAGNET");
28  Dipole->SetGeometryFileName("dipole.geo");
29  fRun->AddModule(Dipole);
30 
31  FairModule *Pipe= new PndPipe("PIPE");
32  Pipe->SetGeometryFileName("pipebeamtarget.geo");
33  fRun->AddModule(Pipe);
34 
35  FairDetector *Tpc = new PndTpcDetector("TPC", kTRUE);
36  Tpc->SetGeometryFileName("tpc.geo");
37  fRun->AddModule(Tpc);
38 
39  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
40  Mvd->SetGeometryFileName("MVD_v1.0_woPassiveTraps.root");
41  fRun->AddModule(Mvd);
42 
43  PndEmc *Emc = new PndEmc("EMC",kTRUE);
44  Emc->SetGeometryFileNameDouble("emc_module1245.dat","emc_module3new.root"); // if you want to use new geometry for FwEndCap
45  fRun->AddModule(Emc);
46 
47  FairDetector *Tof = new PndTof("TOF",kTRUE);
48  Tof->SetGeometryFileName("tofbarrel.geo");
49  fRun->AddModule(Tof);
50 
51  // FairDetector *Drc = new PndDrc("DIRC", kFALSE);
52  // Drc->SetGeometryFileName("dirc.geo");
53  // fRun->AddModule(Drc);
54  PndMdt *Muo = new PndMdt("MDT",kTRUE);
55  Muo->SetBarrel("fast");
56  Muo->SetEndcap("fast");
57  Muo->SetMuonFilter("fast");
58  Muo->SetMdtMagnet(kTRUE);
59  Muo->SetMdtMFIron(kTRUE);
60  fRun->AddModule(Muo);
61 
62  FairDetector *Dch = new PndDchDetector("DCH", kFALSE);
63  Dch->SetGeometryFileName("dch.root");
64  fRun->AddModule(Dch);
65 
67  //-------------------------------
68 
69  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
70  fRun->SetGenerator(primGen);
71 
72  gRandom->SetSeed(3523);
73  FairBoxGenerator* boxGen = new FairBoxGenerator(2212, 3); // 13=muon; 2212=proton 1 = multipl.
74  boxGen->SetPRange(1.,10.); // GeV/c //setPRange vs setPtRange
75  boxGen->SetPhiRange(-180,180); // Azimuth angle range [degree]
76  boxGen->SetThetaRange(1, 5); // Polar angle in lab system range [degree]
77  boxGen->SetXYZ(0.,0.,0.);
78  primGen->AddGenerator(boxGen);
79 
80  FairBoxGenerator* boxGen1 = new FairBoxGenerator(22, 10); // 13 = muon; 1 = multipl. // 211 = pi+
81  boxGen1->SetPRange(1.,1.); // GeV/c
82  boxGen1->SetPhiRange(0., 360.); // Azimuth angle range [degree]
83  boxGen1->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
84  boxGen1->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
85  primGen->AddGenerator(boxGen1);
86 
87  FairBoxGenerator* boxGen2 = new FairBoxGenerator(-211, 5); // 13 = muon; 1 = multipl. // 211 = pi+
88  boxGen2->SetPRange(2.192840326,2.192840326); // GeV/c
89  boxGen2->SetPtRange(0.798217349,0.798217349); // GeV/c
90  boxGen2->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
91  primGen->AddGenerator(boxGen2);
92 
93  FairBoxGenerator *fBox = new FairBoxGenerator(211, 5);
94  fBox->SetPRange(0.1,2.5); // GeV/c
95  fBox->SetPhiRange(0.,360); // Azimuth angle range [degree]
96  fBox->SetThetaRange(5,150); // Polar angle in lab system range [degree]
97  fBox->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
98  primGen->AddGenerator(fBox);
99 
100 
101 
103  fRun->SetBeamMom(15);
104  //---------------------Create and Set the Field(s)----------
106  fRun->SetField(fField);
107 
108  fRun->Init();
109  //
110  // // Fill the Parameter containers for this run
111  // //-------------------------------------------
112  //
113  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
115  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
116  if (fField) { Par->SetParameters(fField); }
117  Par->setInputVersion(fRun->GetRunId(),1);
118  Par->setChanged();
119 
120  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
121  output->open("g3params.root");
122  rtdb->setOutput(output);
123  rtdb->saveOutput();
124  rtdb->print();
125 
126  // Transport nEvents
127  // -----------------1
128 
129  Int_t nEvents = 1;
130  fRun->Run(nEvents);
131 
132  timer.Stop();
133 
134  Double_t rtime = timer.RealTime();
135  Double_t ctime = timer.CpuTime();
136  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
137 
138  cout << " Test passed" << endl;
139  cout << " All ok " << endl;
140  return 0;
141 
142 }
143 
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndBoxGenerator * boxGen2
Definition: sim_pid.C:96
PndEmc * Emc
Definition: sim_emc_apd.C:55
FairDetector * Dch
Definition: runJohan.C:66
FairDetector * Mvd
Definition: sim_emc_apd.C:51
PndBoxGenerator * boxGen1
Definition: sim_pid.C:95
void SetMdtMFIron(bool opt=false)
Definition: PndMdt.h:29
FairBoxGenerator * fBox
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
PndMdt * Muo
Definition: sim_emc_apd.C:67
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
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
TStopwatch timer
Definition: hit_dirc.C:51
void SetBarrel(TString name)
Definition: PndMdt.h:31
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 * Tof
Definition: sim_emc_apd.C:63
void SetEndcap(TString name)
Definition: PndMdt.h:32
void SetMuonFilter(TString name)
Definition: PndMdt.h:33
FairDetector * Tpc
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
Definition: PndMdt.h:20
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