FairRoot/PandaRoot
Functions
tutorials/geane/GeaneExEmc/macro/runMC.C File Reference

Go to the source code of this file.

Functions

void runMC (Int_t nrOfEvents=10, Double_t momentum=1.0, Char_t particle[]="e-")
 

Function Documentation

void runMC ( Int_t  nrOfEvents = 10,
Double_t  momentum = 1.0,
Char_t  particle[] = "e-" 
)

Definition at line 1 of file tutorials/geane/GeaneExEmc/macro/runMC.C.

References PndMultiField::AddField(), basiclibs(), Bool_t, boxGen, Cave, ctime, Double_t, Drc, Emc, FairTrajFilter(), fField, fRun, gDebug, kParameterMerged, map, map1, map2, Mvd, nEvents, output, Par, particle, pid(), Pipe, primGen, printf(), rtdb, rtime, PndBoxGenerator::SetCosTheta(), PndMultiFieldPar::SetParameters(), PndBoxGenerator::SetPhiRange(), PndBoxGenerator::SetPRange(), PndBoxGenerator::SetThetaRange(), timer, Tpc, and trajFilter.

2 {
3  TStopwatch timer;
4  timer.Start();
5  gDebug=0;
6  // Load basic libraries
7  gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
8  basiclibs();
9 
10  // Load this example libraries
11  gSystem->Load("libGeoBase");
12  gSystem->Load("libParBase");
13  gSystem->Load("libBase");
14  gSystem->Load("libPndData");
15  gSystem->Load("libGen");
16  gSystem->Load("libPGen");
17  gSystem->Load("libField");
18  gSystem->Load("libPassive");
19 
20  gSystem->Load("libStt");
21  gSystem->Load("libMuo");
22  gSystem->Load("libEmc");
23  gSystem->Load("libMvd");
24  gSystem->Load("libDrcProp");
25  gSystem->Load("libDrc");
26  gSystem->Load("libTof");
27  gSystem->Load("libgenfit");
28  gSystem->Load("libtpc");
29  gSystem->Load("libtpcreco");
30  gSystem->Load("libTrkBase");
31  gSystem->Load("libtrackrep");
32  gSystem->Load("librecotasks");
33 
34  FairRunSim *fRun = new FairRunSim();
35 
36  // set the MC version used
37  // ------------------------
38 
39  fRun->SetName("TGeant3");
40 
41  fRun->SetOutputFile("mc.root");
42 
43  // Set Material file Name
44  //-----------------------
45 
46  fRun->SetMaterials("media_pnd.geo");
47 
48  // Create and add detectors
49  //-------------------------
50 
51  FairModule *Cave= new PndCave("CAVE");
52  Cave->SetGeometryFileName("cave.geo");
53  fRun->AddModule(Cave);
54 
55  //FairModule *Magnet= new PndMagnet("MAGNET");
56  //Magnet->SetGeometryFileName("magnet.geo");
57  //fRun->AddModule(Magnet);
58 
59  FairModule *Pipe= new PndPipe("PIPE");
60  Pipe->SetGeometryFileName("pipebeamtarget.geo");
61  fRun->AddModule(Pipe);
62 
63  // FairDetector *Stt= new PndStt("STT", kTRUE);
64  // Stt->SetGeometryFileName("straws_skewed_blocks.geo");
65  // fRun->AddModule(Stt);
66 
67  FairDetector *Tpc = new PndTpcDetector("TPC", kTRUE);
68  Tpc->SetGeometryFileName("tpc.geo");
69  fRun->AddModule(Tpc);
70 
71  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
72  Mvd->SetGeometryFileName("MVD14.root");
73  fRun->AddModule(Mvd);
74 
75  FairDetector *Drc = new PndDrc("DIRC", kTRUE);
76  Drc->SetGeometryFileName("dirc.geo");
77  fRun->AddModule(Drc);
78 
79  FairDetector *Emc = new PndEmc("EMC",kTRUE);
80  Emc->SetGeometryFileName("emc_module1234.dat");
81  fRun->AddModule(Emc);
82 
83  // Create and Set Event Generator
84  //-------------------------------
85 
86  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
87  fRun->SetGenerator(primGen);
88 
89  TDatabasePDG *pdg = new TDatabasePDG();
90  Int_t pid = pdg->GetParticle(particle)->PdgCode();
91 
93  boxGen->SetPRange(momentum,momentum); // GeV/c
94  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
95  boxGen->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
96  boxGen->SetCosTheta(); // Set uniform ditribution in cos(theta)
97  // boxGen->SetXYZ(0., 0., 0.); // vertex coordinates [cm]
98  primGen->AddGenerator(boxGen);
99 
101 
102  PndTransMap *map= new PndTransMap("TransMap", "R");
103  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
104  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
105  fField->AddField(map);
106  fField->AddField(map1);
107  fField->AddField(map2);
108 
109  //magnetic field
110  /* PndConstField *fMagField=new PndConstField();
111  fMagField->SetField(0.,0.,20.); // values are in kG
112  fMagField->SetFieldRegion(-50, 50,-50, 50, -100, 100);// values are in cm (xmin,xmax,ymin,ymax,zmin,zmax)
113  fField->AddField(fMagField);
114  */
115 
116  fRun->SetField(fField);
117 
118  fRun->SetStoreTraj(kTRUE);
119 
120  fRun->Init();
121 
122  // -Trajectories Visualization
123  // ----------------------------
124  FairTrajFilter* trajFilter = FairTrajFilter::Instance();
125  // Set cuts for storing the trajectpries
126  trajFilter->SetStepSizeCut(0.01); // 1 cm
127  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
128  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
129  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
130  trajFilter->SetStorePrimaries(kTRUE);
131  trajFilter->SetStoreSecondaries(kTRUE);
132 
133  // Fill the Parameter containers for this run
134  //-------------------------------------------
135 
136  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
137  Bool_t kParameterMerged=kTRUE;
138  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
139  output->open("params.root");
140  rtdb->setOutput(output);
141 
142  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
143  if (fField) { Par->SetParameters(fField); }
144  Par->setInputVersion(fRun->GetRunId(),1);
145  Par->setChanged();
146 
147  rtdb->saveOutput();
148  rtdb->print();
149 
150  // Transport nEvents
151  // -----------------
152 
153  Int_t nEvents = nrOfEvents;
154  fRun->Run(nEvents);
155 
156  timer.Stop();
157 
158  Double_t rtime = timer.RealTime();
159  Double_t ctime = timer.CpuTime();
160  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
161 }
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
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90)
basiclibs()
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndTransMap * map
Definition: sim_emc_apd.C:99
PndEmc * Emc
Definition: sim_emc_apd.C:55
int pid()
FairDetector * Mvd
Definition: sim_emc_apd.C:51
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
const int particle
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()
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
FairDetector * Tpc
PndDipoleMap * map1
Definition: sim_emc_apd.C:100
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
void SetPRange(Double32_t pmin=0, Double32_t pmax=10)
void AddField(FairField *field)
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)
Definition: PndCave.h:8