FairRoot/PandaRoot
run_full.C
Go to the documentation of this file.
1 // Macro for geant simulation of forward disk DIRC
2 
3 // at the moment we use particles generated with FairBoxGenerator
4 // Vertex is set to (0,0,0)
5 
6 {
7  gROOT->Reset();
8 
9  // control the script
10  TString fOutFile = "sim_endrcP.root"; // save data in workdir
11  TString fMediaFile = "media_pnd.geo"; // media_pnd.geo
12  TString fGeoFile = "endrc.root"; // geometry definition
13  // TString fGeoFile = "endrc.geo"; // geometry definition
14  TString fGeantVersion = "TGeant3"; // simulation to run
15  UInt_t fSeed = 0; // set seed to systemtime
16  Double_t fPMin = 4.; // momentum in Gev/c for the created particle
17 // Double_t fPMax = 9;
19  Double_t fThetaMin = 20.; // between 10. and 22. degree will hit for sure
20 // Double_t fThetaMax = 22.;
22  Int_t fEvents = 1; // number of events, usually 1 at the moment to analyse
23  Int_t fParticles = 1; // number of particles created in vertex
24  Int_t *fParticle = new Int_t [fParticles]; // the particles we want to be generated
25  Int_t i=0;
26 // fParticle[i++] = -211; // pi -
27 // fParticle[i++] = 111; // pi 0
28 // fParticle[i++] = 211; // pi +
29 // fParticle[i++] = -321; // K-
30 // fParticle[i++] = 311; // K 0
31 // fParticle[i++] = 321; // K+
32  fParticle[i++] = 2212; // p
33 
34  // ---------------------------------------------------------------------------
35  // ---------------------------------------------------------------------------
36 
37  // random seed. Set to 0 for a random seed.
38  gRandom->SetSeed(fSeed);
39 
40  // to measure runtime
41  TStopwatch timer;
42  timer.Start();
43  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
44  gSystem->Load("libEnDrc"); // our library
45 
46  // stopp if there is already an instance
47  // i cant find out how to use this one, so
48  // we better restart root.
49  // If we will go on, root will crash.
50  FairRunSim* fRun = 0;
51  if (0 != (FairRunSim::Instance())) {
52  cout << "[ ** ] FairRunSim instance found. Please restart root." << endl;
53  return;
54  }
55  else
56  fRun = new FairRunSim();
57 
58  // setup versions and files
59 // fRun->SetOutputFile(fOutFile.Data());
60  fRun->SetOutputFile(fOutFile);
61  fRun->SetName(fGeantVersion);
62  fRun->SetMaterials(fMediaFile);
63 
64  // modules
65  // the cave
66  FairModule* Cave= new PndCave("CAVE");
67  Cave->SetGeometryFileName("pndcave.geo");
68  fRun->AddModule(Cave);
69  // the disk dirc
70  FairDetector* Dsk = new PndEnDrc("EDRC", kTRUE);
71  Dsk->SetGeometryFileName(fGeoFile);
72  fRun->AddModule(Dsk);
73 
74  // create and set event generator
75  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
76  fRun->SetGenerator(primGen);
78  for (Int_t n =0; n<10; n++){
79  randx= gRandom->Gaus(0,1);
80  randy= gRandom->Gaus(0,1);
81  FairParticleGenerator* partGen = new FairParticleGenerator(2212, 5, 0.3*randx, 0.3*randy, 0.3);
82  primGen->AddGenerator(partGen);
83  }
84 
85 
86 // for (Int_t p=0; p<fParticles; p++) {
87 // FairBoxGenerator* boxGen = new FairBoxGenerator(fParticle[p], 1);
88 // boxGen->SetBoxXYZ(0.,0.,0.,0.,0.); // create in vertex, no smearing
89 // boxGen->SetPRange(fPMin, fPMax); // momentum GeV/c
90 // boxGen->SetPhiRange(0., 0.); // Azimuth angle range [degree]
91 // boxGen->SetThetaRange(fThetaMin, fThetaMax); // Polar angle in lab system range [degree]
92 // primGen->AddGenerator(boxGen);
93 // }
94 // // store the trajectories
95  fRun->SetStoreTraj(kTRUE);
96 
97  // init the simulation
98  fRun->Init();
99 
100  primGen->DoTracking(kTRUE);
101  FairTrajFilter* trajFilter = FairTrajFilter::Instance();
102  // Set cuts for storing the trajectpries
103  trajFilter->SetStepSizeCut(0.01); // 1 cm
104 // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
105 // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
106 // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
107  trajFilter->SetStorePrimaries(kTRUE);
108  trajFilter->SetStoreSecondaries(kTRUE);
109 
110  // Fill the Parameter containers for this run
111  //-------------------------------------------
112  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
114  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
115  output->open("simparams.root");
116 
117  rtdb->setOutput(output);
118  rtdb->saveOutput();
119  rtdb->print();
120 
121  // run
122  fRun->Run(fEvents);
123 
124  timer.Stop();
125  Double_t rtime = timer.RealTime();
126  Double_t ctime = timer.CpuTime();
127  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
128 }
FairTrajFilter * trajFilter
Definition: run_full.C:101
TStopwatch timer
Definition: run_full.C:41
FairRunSim * fRun
Definition: run_full.C:50
Int_t i
Definition: run_full.C:25
FairDetector * Dsk
Definition: run_full.C:70
int n
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
UInt_t fSeed
Definition: run_full.C:15
PndHypBupGenerator * partGen
Definition: runSimHF_ptr.C:144
Double_t fThetaMin
Definition: run_full.C:19
Double_t fPMin
Definition: run_full.C:16
FairRuntimeDb * rtdb
Definition: run_full.C:112
TString fOutFile
Definition: run_full.C:10
Int_t fParticles
Definition: run_full.C:23
Int_t * fParticle
Definition: run_full.C:24
FairPrimaryGenerator * primGen
Definition: run_full.C:75
Double_t
FairModule * Cave
Definition: run_full.C:66
Double_t randy
Definition: run_full.C:77
Double_t randx
Definition: run_full.C:77
new FairTrajFilter()
TString fMediaFile
Definition: run_full.C:11
Double_t fPMax
Definition: run_full.C:18
Int_t fEvents
Definition: run_full.C:22
TString fGeantVersion
Definition: run_full.C:14
Double_t rtime
Definition: run_full.C:125
FairParRootFileIo * output
Definition: run_full.C:114
Bool_t kParameterMerged
Definition: run_full.C:113
Double_t fThetaMax
Definition: run_full.C:21
Double_t ctime
Definition: run_full.C:126
TString fGeoFile
Definition: run_full.C:12
Definition: PndCave.h:8