FairRoot/PandaRoot
QAmacro_sim_G4.C
Go to the documentation of this file.
1 // Macro for running Simulation of the Full Panda Detector with Geant4 (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("TGeant4");
11 
12  fRun->SetOutputFile("simfullG4.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", kTRUE);
52  Drc->SetGeometryFileName("dirc.geo");
53  fRun->AddModule(Drc);
54 
55  PndMdt *Muo = new PndMdt("MDT",kTRUE);
56  Muo->SetBarrel("fast");
57  Muo->SetEndcap("fast");
58  Muo->SetMuonFilter("fast");
59  Muo->SetMdtMagnet(kTRUE);
60  Muo->SetMdtMFIron(kTRUE);
61  fRun->AddModule(Muo);
62 
63 
64  FairDetector *Dch = new PndDchDetector("DCH", kTRUE);
65  Dch->SetGeometryFileName("dch.root");
66  fRun->AddModule(Dch);
67 
69  //-------------------------------
70 
71  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
72  fRun->SetGenerator(primGen);
73 
74  gRandom->SetSeed(3523);
75  FairBoxGenerator* boxGen = new FairBoxGenerator(2212, 3); // 13=muon; 2212=proton 1 = multipl.
76  boxGen->SetPRange(1.,10.); // GeV/c //setPRange vs setPtRange
77  boxGen->SetPhiRange(-180,180); // Azimuth angle range [degree]
78  boxGen->SetThetaRange(1, 5); // Polar angle in lab system range [degree]
79  boxGen->SetXYZ(0.,0.,0.);
80  primGen->AddGenerator(boxGen);
81 
82  FairBoxGenerator* boxGen1 = new FairBoxGenerator(22, 10); // 13 = muon; 1 = multipl. // 211 = pi+
83  boxGen1->SetPRange(1.,1.); // GeV/c
84  boxGen1->SetPhiRange(0., 360.); // Azimuth angle range [degree]
85  boxGen1->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
86  boxGen1->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
87  primGen->AddGenerator(boxGen1);
88 
89  FairBoxGenerator* boxGen2 = new FairBoxGenerator(-211, 5); // 13 = muon; 1 = multipl. // 211 = pi+
90  boxGen2->SetPRange(2.192840326,2.192840326); // GeV/c
91  boxGen2->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
92  primGen->AddGenerator(boxGen2);
93 
94  FairBoxGenerator *fBox = new FairBoxGenerator(211, 5);
95  fBox->SetPRange(0.1,2.5); // GeV/c
96  fBox->SetPhiRange(0.,360); // Azimuth angle range [degree]
97  fBox->SetThetaRange(5,150); // Polar angle in lab system range [degree]
98  fBox->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
99  primGen->AddGenerator(fBox);
100 
101 
103  fRun->SetBeamMom(15);
104 
105  //---------------------Create and Set the Field(s)----------
107  fRun->SetField(fField);
108 
109  fRun->Init();
110 
111  //
112  // // Fill the Parameter containers for this run
113  // //-------------------------------------------
114  //
115  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
117  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
118  if (fField) { Par->SetParameters(fField); }
119  Par->setInputVersion(fRun->GetRunId(),1);
120  Par->setChanged();
121 
122  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
123  output->open("g4params.root");
124  rtdb->setOutput(output);
125  rtdb->saveOutput();
126  rtdb->print();
127 
128  // Transport nEvents
129  // -----------------1
130 
131  Int_t nEvents = 1;
132  fRun->Run(nEvents);
133 
134  timer.Stop();
135 
136  Double_t rtime = timer.RealTime();
137  Double_t ctime = timer.CpuTime();
138  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
139 
140  cout << " Test passed" << endl;
141  cout << " All ok " << endl;
142  delete fRun;
143  return 0;
144 
145 }
146 
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)
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
Definition: PndDrc.h:31
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