FairRoot/PandaRoot
runJohan.C
Go to the documentation of this file.
1 // Macro to simulate the MVD in pandaroot
2 // Updated 30.11.2009
3 // Ralf Kliemt
4 {
5  TStopwatch timer;
6  timer.Start();
7  gDebug=0;
8  int verboseLevel = 0;
9  Int_t nEvents = 1;
10 
11  //FileNames
12  TString simOutput="Mvd_Test.root";
13  TString parOutput="Mvd_Params.root";
14 
15  // Load basic libraries
16  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
17  FairRunSim *fRun = new FairRunSim();
18 
19  // set the MC version used
20  // ------------------------
21 
22  fRun->SetName("TGeant4");
23  // Choose the Geant Navigation System
24 
25  fRun->SetOutputFile(simOutput);
26 
27  // Set Material file Name
28  //-----------------------
29  fRun->SetMaterials("media_pnd.geo");
30 
31  // Create and add detectors
32  //-------------------------
33 
34  FairModule *Cave= new PndCave("CAVE");
35  Cave->SetGeometryFileName("pndcave.geo");
36  fRun->AddModule(Cave);
37  FairModule *Magnet= new PndMagnet("MAGNET");
38  Magnet->SetGeometryFileName("magnet.geo");
39  fRun->AddModule(Magnet);
40  FairModule *Pipe= new PndPipe("PIPE");
41  //fRun->AddModule(Pipe);
42  //------------------------- STT -----------------
43  FairDetector *Stt= new PndStt("STT", kTRUE);
44  Stt->SetGeometryFileName("straws_skewed_blocks_pipe_120cm.geo");
45  fRun->AddModule(Stt);
46  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
47  Mvd->SetGeometryFileName("Mvd-2.1_FullVersion.root"); // only sensors, update follows
48  Mvd->SetVerboseLevel(verboseLevel);
49  fRun->AddModule(Mvd);
50 
51  //------------------------- EMC -----------------
52  PndEmc *Emc = new PndEmc("EMC",kTRUE);
53  Emc->SetGeometryVersion(15);
54  // See PndEmc::SetGeometryVersion() for available geometries and add there new one if necessary
55  Emc->SetStorageOfData(kFALSE);
56  fRun->AddModule(Emc);
57  //------------------------- MDT -----------------
58  PndMdt *Muo = new PndMdt("MDT",kTRUE);
59  Muo->SetBarrel("torino");
60  Muo->SetEndcap("torino");
61  Muo->SetMuonFilter("torino");
62  Muo->SetMdtMagnet(kTRUE);
63  Muo->SetMdtMFIron(kTRUE);
64  //fRun->AddModule(Muo);
65  //------------------------- DCH -----------------
66  FairDetector *Dch = new PndDchDetector("DCH", kTRUE);
67  Dch->SetGeometryFileName("dch.root");
68  //fRun->AddModule(Dch);
69 
70  //------------------------- GEM -----------------
71  FairDetector *Gem = new PndGemDetector("GEM", kTRUE);
72  Gem->SetGeometryFileName("gem_3Stations.root");
73  //fRun->AddModule(Gem);
74 
75  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
76  fRun->SetGenerator(primGen);
77 
78  // Particle Generator (pdgid,mult, px,py,pz, vx,vy,vz)
79  // single pions for testing
80 // FairParticleGenerator* partGenX = new FairParticleGenerator(211,1, 1.,0.,0., 0.,0.,0.);
81 // FairParticleGenerator* partGenY = new FairParticleGenerator(211,1, 0.,1.,0., 0.,0.,0.);
82 // FairParticleGenerator* partGenZ = new FairParticleGenerator(211,1, 0.,0.1,1., 0.,0.,0.);
83 // FairParticleGenerator* partGenXYZ = new FairParticleGenerator(211,1, 1.,1.,5., 0.,0.,0.);
84 // primGen->AddGenerator(partGenX);
85 // primGen->AddGenerator(partGenY);
86 // primGen->AddGenerator(partGenZ);
87 // primGen->AddGenerator(partGenXYZ);
88 
89  // Ion Generator
90  // FairIonGenerator *fIongen= new FairIonGenerator(79, 197,79,1, 0.,0., 25, 0.,0.,-1.);
91  // primGen->AddGenerator(fIongen);
92 
93  // Box Generator
94  //Pions
95  FairBoxGenerator *fBox = new FairBoxGenerator(211, 4);
96  fBox->SetPRange(0.1,2.5);
97  fBox->SetThetaRange(5,150);
98  fBox->SetPhiRange(0.,360);
99  fBox->SetCosTheta();
100  primGen->AddGenerator(fBox);
101 
102  //EvtGen Generator
103 // FairEvtGenGenerator* evtGen = new
104 // FairEvtGenGenerator("/home/ralfk/Pandaroot/pandaroot/macro/mvd/output.evt");
105 // primGen->AddGenerator(evtGen);
106 
107  // Urqmd Generator
108  // FairUrqmdGenerator* urqmdGen = new FairUrqmdGenerator("../../input/00-03fm.100ev.f14");
109  // primGen->AddGenerator(urqmdGen);
110 
111  // DPM Generator
112  //PndDpmGenerator* dpmGen = new PndDpmGenerator("/home/kph/stockman/fairroot/cbmroot/pandaroot/pgenerators/DpmEvtGen/Background-micro.root");
113  //primGen->AddGenerator(dpmGen);
114 
115  // Field Map Definition
116  // --------------------
117  // 1- Reading the new field map in the old format
118 
119  fRun->SetBeamMom(15);
120  //---------------------Create and Set the Field(s)----------
122  fRun->SetField(fField);
123 
124  fRun->SetStoreTraj(kTRUE); // toggle this for use with EVE
125  fRun->SetRadLenRegister(kFALSE); // toggle for material budget study
126 
127  fRun->Init();
128 
129 // Set cuts for storing the trajectpries
130 // FairTrajFilter* trajFilter = FairTrajFilter::Instance();
131 // trajFilter->SetStepSizeCut(0.01); // 1 cm
132 // trajFilter->SetVertexCut(-200., -200., -200, 200., 200., 200.);
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  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
143  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
144  output->open(parOutput.Data(),"RECREATE");
145  rtdb->setOutput(output);
146 
147  // Transport nEvents
148  // -----------------
149 
150  fRun->Run(nEvents);
151 
152  rtdb->saveOutput();
153  rtdb->print();
154 
155 
156  timer.Stop();
157  Double_t rtime = timer.RealTime();
158  Double_t ctime = timer.CpuTime();
159  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
160 }
161 
Double_t rtime
Definition: runJohan.C:157
FairPrimaryGenerator * primGen
Definition: runJohan.C:75
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
FairDetector * Mvd
Definition: runJohan.C:46
Double_t ctime
Definition: runJohan.C:158
PndMultiField * fField
Definition: runJohan.C:121
FairDetector * Dch
Definition: runJohan.C:66
FairRunSim * fRun
Definition: runJohan.C:17
void SetMdtMFIron(bool opt=false)
Definition: PndMdt.h:29
void SetStorageOfData(Bool_t val)
Definition: PndEmc.cxx:941
TString simOutput
Definition: runJohan.C:12
TString parOutput
Definition: runJohan.C:13
Simulation of EMC.
Definition: PndEmc.h:26
FairDetector * Gem
Definition: runJohan.C:71
void SetMdtMagnet(bool opt=false)
Definition: PndMdt.h:27
int verboseLevel
Definition: runJohan.C:8
gDebug
Definition: runJohan.C:7
Double_t
TStopwatch timer
Definition: hit_dirc.C:51
virtual void SetGeometryVersion(const Int_t GeoNumber)
Definition: PndEmc.cxx:966
PndEmc * Emc
Definition: runJohan.C:52
void SetBarrel(TString name)
Definition: PndMdt.h:31
FairParRootFileIo * output
Definition: runJohan.C:143
FairModule * Pipe
Definition: runJohan.C:40
void SetEndcap(TString name)
Definition: PndMdt.h:32
void SetMuonFilter(TString name)
Definition: PndMdt.h:33
FairBoxGenerator * fBox
Definition: runJohan.C:95
Definition: PndStt.h:34
Definition: PndMdt.h:20
Bool_t kParameterMerged
Definition: runJohan.C:142
FairModule * Magnet
Definition: runJohan.C:37
FairDetector * Stt
Definition: runJohan.C:43
Int_t nEvents
Definition: runJohan.C:9
FairModule * Cave
Definition: runJohan.C:34
PndMdt * Muo
Definition: runJohan.C:58
FairRuntimeDb * rtdb
Definition: runJohan.C:141
Definition: PndCave.h:8