FairRoot/PandaRoot
Functions
lut/simLut.C File Reference

Go to the source code of this file.

Functions

int simLut (Int_t nEvents=20, Int_t barId=1, TString simFile="simlut.root", TString parFile="parlut.root", Int_t bars=3, TString geom="dirc_e3_b3_l6_m40.root")
 

Function Documentation

int simLut ( Int_t  nEvents = 20,
Int_t  barId = 1,
TString  simFile = "simlut.root",
TString  parFile = "parlut.root",
Int_t  bars = 3,
TString  geom = "dirc_e3_b3_l6_m40.root" 
)

Definition at line 1 of file lut/simLut.C.

References allDigiFile, Bool_t, boxGen, Cave, ctime, digiFile, Double_t, Drc, fRun, gDebug, geom(), kParameterMerged, nEvents, output, parFile, parIo1, primGen, printf(), rtdb, rtime, PndDrc::SetBlackLensSides(), PndDrc::SetDetEffAtProduction(), PndDrc::SetMirrorReal(), PndDrc::SetOptionForLUT(), PndDrc::SetRunCherenkov(), PndDrc::SetStopTime(), simFile, PndDrc::StopSecondaries(), timer, and TString.

1  {
2  TStopwatch timer;
3  timer.Start();
4  gDebug=0;
5 
6  TString digiFile = "all.par";
7  TString vmcdir=gSystem->Getenv("VMCWORKDIR");
8 
9  FairRunSim *fRun = new FairRunSim();
10 
11  fRun->SetName("TGeant4");
12  fRun->SetGenerateRunInfo(kFALSE);
13  fRun->SetOutputFile(simFile);
14  fRun->SetMaterials("media_pnd.geo");
15  fRun->SetUseFairLinks(kTRUE);
16  fRun->SetUserConfig(vmcdir+"/macro/detectors/drc/g4Config_Cherenkov.C");
17 
18  // Set the parameters
19  //-------------------------------
20  TString allDigiFile = gSystem->Getenv("VMCWORKDIR");
21  allDigiFile += "/macro/params/";
22  allDigiFile += digiFile;
23 
24  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
25  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
26  parIo1->open(allDigiFile.Data(),"in");
27  rtdb->setFirstInput(parIo1);
28 
30  FairParRootFileIo* output = new FairParRootFileIo(kParameterMerged);
31  output->open(parFile);
32  rtdb->setOutput(output);
33 
34  // Create and add detectors
35  //-------------------------
36  FairModule *Cave= new PndCave("CAVE");
37  Cave->SetGeometryFileName("pndcave.geo");
38  fRun->AddModule(Cave);
39 
40  PndDrc *Drc = new PndDrc("DIRC", kTRUE);
41  Drc->SetRunCherenkov(kTRUE); // for fast sim Cherenkov -> kFALSE
42  Drc->SetMirrorReal(kTRUE);
43  Drc->StopSecondaries(kTRUE);
44  Drc->SetDetEffAtProduction(kFALSE);
45  Drc->SetStopTime(50);
46  Drc->SetVerboseLevel(0);
47  //Drc->SetOnlyDirectPho(kFALSE);
48  Drc->SetBlackLensSides(kTRUE);
49  Drc->SetOptionForLUT(kTRUE);
50  Drc->SetGeometryFileName(geom);
51  fRun->AddModule(Drc);
52 
53  // Set Random Number seed
54  Int_t rndm=0;
55  if (gSystem->Getenv("RANDOM")) {
56  rndm = atoi(gSystem->Getenv("RANDOM"));
57  }
58  gRandom->SetSeed(rndm); // Set 0 to use the current time
59  cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
60 
61  // Create and Set Event Generator
62  //-------------------------------
63  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
64  fRun->SetGenerator(primGen);
65 
66  Double_t x5[] = { 45.543481, 46.148229, 46.752977, 47.357725, 47.962473 };
67  Double_t y5[] = { 15.265154, 12.102453, 8.939751, 5.777050, 2.614349 };
68 
69  Double_t x4[] = { 45.665,46.418, 47.145, 47.873 };
70  Double_t y4[] = { 14.643,10.771, 6.893, 3.121 };
71 
72  Double_t x3[] = {45.748, 46.752977,47.775 };
73  Double_t y3[] = {14.26, 8.939751, 3.591 };
74 
75  Double_t x2[] = {46.014, 47.514 };
76  Double_t y2[] = {12.895, 4.991 };
77 
78  Double_t x1[] = {46.779};
79  Double_t y1[] = {8.946};
80 
81  FairBoxGenerator* boxGen = new FairBoxGenerator(50000050, 1000);
82  boxGen->SetPRange(3.18e-9,3.18e-9); // GeV/c //3.18eV <==> 390nm
83  //boxGen->SetPhiRange(0,360);
84  boxGen->SetThetaRange(90, 180);
85  //boxGen->SetThetaRange(0, 180);
86  boxGen->SetCosTheta();
87  //boxGen->SetBoxXYZ(46.3 ,7.4, 47.3,10.4, -118.9+0.01+60);
88  // boxGen->SetXYZ(46.8,8.9,-119+0.01);
89  if(bars==1) boxGen->SetXYZ(x1[barId],y1[barId],-119+0.0001);
90  if(bars==2) boxGen->SetXYZ(x2[barId],y2[barId],-119+0.0001);
91  if(bars==3) boxGen->SetXYZ(x3[barId],y3[barId],-119+0.0001);
92  if(bars==4) boxGen->SetXYZ(x4[barId],y4[barId],-119+0.0001);
93  if(bars==5) boxGen->SetXYZ(x5[barId],y5[barId],-119+0.0001);
94  primGen->AddGenerator(boxGen);
95 
96  // // Box Generator
97  // FairBoxGenerator* boxGen = new FairBoxGenerator(13, 1);// 211 = pion, 321 = kaon; 13 = muon-; 1 = multipl.
98  // boxGen->SetPRange(3,3);
99  // boxGen->SetPhiRange(10.825, 10.825); // Azimuth angle range [degree]
100  // boxGen->SetThetaRange(87.5,87.5); // Polar a1ngle in lab system range [degree]
101  // boxGen->SetXYZ(0.,0.,0.);
102  // primGen->AddGenerator(boxGen);
103 
104  // fRun->SetStoreTraj(kTRUE);
105 
106  fRun->Init();
107 
108  rtdb->setOutput(output);
109  rtdb->saveOutput();
110  rtdb->print();
111 
112  fRun->Run(nEvents);
113 
114  timer.Stop();
115  Double_t rtime = timer.RealTime();
116  Double_t ctime = timer.CpuTime();
117  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
118 
119  return 0;
120 }
PndDrc * Drc
Definition: sim_emc_apd.C:75
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetStopTime(Double_t ti=-1.)
Set time after which photons are killed.
Definition: PndDrc.h:99
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetBlackLensSides(Bool_t lesi=kFALSE)
Definition: PndDrc.h:94
TString digiFile
Definition: bump_emc.C:20
TString allDigiFile
Definition: hit_muo.C:36
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
TString simFile
Definition: bump_emc.C:11
Double_t
TString parFile
Definition: hit_dirc.C:14
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
void SetDetEffAtProduction(Bool_t dep=kFALSE)
Kill photons at production point according to the detector efficiency distribution.
Definition: PndDrc.h:72
Double_t ctime
Definition: hit_dirc.C:114
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
void SetRunCherenkov(Bool_t ch)
Definition: PndDrc.h:222
void StopSecondaries(Bool_t ss=kFALSE)
Kill secondaries at its production point.
Definition: PndDrc.h:53
void SetOptionForLUT(Bool_t oplu=kFALSE)
Definition: PndDrc.h:109
void SetMirrorReal(Bool_t mir=kTRUE)
Choose between ideal and real mirror:
Definition: PndDrc.h:92
Double_t rtime
Definition: hit_dirc.C:113
Definition: PndCave.h:8