FairRoot/PandaRoot
runMC2.C
Go to the documentation of this file.
1 {
2  TStopwatch timer;
3  timer.Start();
4  gDebug=0;
5  // Load basic libraries
6  gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
7  basiclibs();
8 
9  // Load this example libraries
10  gSystem->Load("libGeoBase");
11  gSystem->Load("libParBase");
12  gSystem->Load("libBase");
13  gSystem->Load("libField");
14  gSystem->Load("libPndData");
15  gSystem->Load("libPassive");
16  gSystem->Load("libStt");
17  // gSystem->Load("libPlane");
18  gSystem->Load("libGen");
19  gSystem->Load("libPGen");
20 
21  FairRunSim *fRun = new FairRunSim();
22 
23  // set the MC version used
24  // ------------------------
25 
26  fRun->SetName("TGeant3");
27 
28  fRun->SetOutputFile("ex2.root");
29 
30 
31  // Set Material file Name
32  //-----------------------
33 
34  fRun->SetMaterials("media_pnd.geo");
35 
36  // Create and add detectors
37  //-------------------------
38 
39  FairModule *Cave= new PndCave("CAVE");
40  Cave->SetGeometryFileName("cave.geo");
41  fRun->AddModule(Cave);
42 
43  FairDetector *Stt = new PndStt("STT", kTRUE);
44 // Stt->SetGeometryFileName("optimized_stt.geo");
45  Stt->SetGeometryFileName("straws_skewed_blocks.geo");
46  fRun->AddModule(Stt);
47 
48  // Create and Set Event Generator
49  //-------------------------------
50 
51  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
52  fRun->SetGenerator(primGen);
53 
55  boxGen->SetPRange(1.5,1.5); // GeV/c
56  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
57  boxGen->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
58  boxGen->SetCosTheta(); // Set uniform ditribution in cos(theta)
59  // boxGen->SetXYZ(0., 0., 0.); // vertex coordinates [cm]
60  primGen->AddGenerator(boxGen);
61 
62 
63  //magnetic field
65  fMagField->SetField(0.,0.,20.); // values are in kG
66  fMagField->SetFieldRegion(-150, 150, -150, 150, -250, 250);// values are in cm (xmin,xmax,ymin,ymax,zmin,zmax)
67  fRun->SetField(fMagField);
68 //
69  // ------------------------------------------------------------------------
70 
71 
72 // fRun->SetStoreTraj(kTRUE);
73 
74 
75  fRun->Init();
76 
77  // Fill the Parameter containers for this run
78  //-------------------------------------------
79 
80  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
82  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
83  output->open("ex2params.root");
84  rtdb->setOutput(output);
85 
86  PndConstPar* fieldPar = (PndConstPar*) rtdb->getContainer("PndConstPar");
87  if ( fMagField ) { fieldPar->SetParameters(fMagField); }
88  fieldPar->setInputVersion(fRun->GetRunId(),1);
89  fieldPar->setChanged(kTRUE);
90 
91  rtdb->saveOutput();
92  rtdb->print();
93 
94  // Transport nEvents
95  // -----------------
96 
97  Int_t nEvents = 1000;
98  fRun->Run(nEvents);
99 
100  timer.Stop();
101 
102  Double_t rtime = timer.RealTime();
103  Double_t ctime = timer.CpuTime();
104  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
105 }
106 
FairRuntimeDb * rtdb
Definition: runMC2.C:80
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90)
basiclibs()
PndConstField * fMagField
Definition: runMC2.C:64
FairModule * Cave
Definition: runMC2.C:39
FairRunSim * fRun
Definition: runMC2.C:21
Double_t rtime
Definition: runMC2.C:102
void SetFieldRegion(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
Double_t
void SetField(Double_t bX, Double_t bY, Double_t bZ)
FairParRootFileIo * output
Definition: runMC2.C:82
TStopwatch timer
Definition: hit_dirc.C:51
FairDetector * Stt
Definition: runMC2.C:43
void SetParameters(FairField *field)
Definition: PndConstPar.cxx:54
Bool_t kParameterMerged
Definition: runMC2.C:81
Double_t ctime
Definition: runMC2.C:103
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Definition: PndStt.h:34
void SetPRange(Double32_t pmin=0, Double32_t pmax=10)
FairPrimaryGenerator * primGen
Definition: runMC2.C:51
gDebug
Definition: runMC2.C:4
PndBoxGenerator * boxGen
Definition: runMC2.C:54
PndConstPar * fieldPar
Definition: runMC2.C:86
Int_t nEvents
Definition: runMC2.C:97
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)
Definition: PndCave.h:8