FairRoot/PandaRoot
Functions
detectors/drc/sim.C File Reference

Go to the source code of this file.

Functions

int sim (Int_t nEvents=10, TString outFile="sim.root", TString parFile="par.root", TString geom="dirc_e3_b3_l6_m40.root", Int_t pdg=321, Double_t mom=3.5, Double_t theta=140, Double_t phi=10.825)
 

Function Documentation

int sim ( Int_t  nEvents = 10,
TString  outFile = "sim.root",
TString  parFile = "par.root",
TString  geom = "dirc_e3_b3_l6_m40.root",
Int_t  pdg = 321,
Double_t  mom = 3.5,
Double_t  theta = 140,
Double_t  phi = 10.825 
)

Definition at line 1 of file detectors/drc/sim.C.

References allDigiFile, Bool_t, boxGen, Cave, ctime, Double_t, Drc, fField, fRun, gDebug, geom(), kParameterMerged, mom, nEvents, outFile, output, parFile, parIo1, phi, Pipe, primGen, printf(), rtdb, rtime, PndDrc::SetBlackLensSides(), PndDrc::SetDetEffAtProduction(), PndDrc::SetMirrorReal(), PndDrc::SetOptionForLUT(), PndDrc::SetRunCherenkov(), PndDrc::SetStopTime(), PndDrc::SetTransportEffAtProduction(), PndDrc::StopChargedTrackAfterDIRC(), PndDrc::StopSecondaries(), theta, timer, and TString.

1  {
2 
3  TStopwatch timer;
4  timer.Start();
5  gDebug=0;
6 
7  TString vmcdir=gSystem->Getenv("VMCWORKDIR");
8 
9  FairRunSim *fRun = new FairRunSim();
10  fRun->SetName("TGeant4");
11  fRun->SetGenerateRunInfo(kFALSE);
12  fRun->SetBeamMom(15);
13  fRun->SetOutputFile(outFile);
14  fRun->SetMaterials("media_pnd.geo");
15  fRun->SetUseFairLinks(kTRUE);
16  fRun->SetUserConfig(vmcdir+"/macro/detectors/drc/g4Config_Cherenkov.C");
17  fRun->SetUserCuts(vmcdir+"/macro/detectors/drc/g4Cuts.C");
18  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
19 
20  // Set the parameters
21  //-------------------------------
22  TString allDigiFile(vmcdir+"/macro/params/all.par");
23 
24  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
25  parIo1->open(allDigiFile.Data(),"in");
26  rtdb->setFirstInput(parIo1);
27 
29  FairParRootFileIo* output = new FairParRootFileIo(kParameterMerged);
30  output->open(parFile.Data());
31  rtdb->setOutput(output);
32 
33  // Create and add detectors
34  //-------------------------
35  FairModule *Cave= new PndCave("CAVE");
36  Cave->SetGeometryFileName("pndcave.geo");
37  fRun->AddModule(Cave);
38 
39  //----------------------- Pipe -----------------
40  FairModule *Pipe= new PndPipe("PIPE");
41  Pipe->SetGeometryFileName("beampipe_201309.root");
42  fRun->AddModule(Pipe);
43 
44  // //----------------------- MVD -----------------
45  // FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
46  // Mvd->SetGeometryFileName("Mvd-2.1_FullVersion.root");
47  // fRun->AddModule(Mvd);
48 
49  // //----------------------- STT -----------------
50  // FairDetector *Stt= new PndStt("STT", kTRUE);
51  // Stt->SetGeometryFileName("straws_skewed_blocks_35cm_pipe.geo");
52  // fRun->AddModule(Stt);
53 
54  //----------------------- DRC -----------------
55  PndDrc *Drc = new PndDrc("DIRC", kTRUE);
56  Drc->SetRunCherenkov(kTRUE); // for fast sim Cherenkov -> kFALSE
57  Drc->SetMirrorReal(kTRUE);
58  Drc->StopChargedTrackAfterDIRC(kTRUE);
59  Drc->StopSecondaries(kTRUE);
60  Drc->SetTransportEffAtProduction(kTRUE);
61  Drc->SetDetEffAtProduction(kTRUE);
62  Drc->SetStopTime(150.);
63  Drc->SetVerboseLevel(0);
64  Drc->SetBlackLensSides(kTRUE);
65  Drc->SetOptionForLUT(kFALSE);
66  //Drc->SetGeometryFileName("dirc_g1_l6.root");
67  Drc->SetGeometryFileName(geom);
68  fRun->AddModule(Drc);
69 
70  // //------------------------- SCITIL -----------------
71  // FairDetector *SciT = new PndSciT("SCIT",kTRUE);
72  // SciT->SetGeometryFileName("barrel-SciTil_07022013.root");
73  // fRun->AddModule(SciT);
74  // //------------------------- GEM -----------------
75  // FairDetector *Gem = new PndGemDetector("GEM", kTRUE);
76  // Gem->SetGeometryFileName("gem_3Stations.root");
77  // fRun->AddModule(Gem);
78  // //------------------------- EMC -----------------
79  // PndEmc *Emc = new PndEmc("EMC",kTRUE);
80  // Emc->SetGeometryVersion(1);
81  // Emc->SetStorageOfData(kFALSE);
82  // fRun->AddModule(Emc);
83  // //------------------------- DISC -----------------
84  // PndDsk* Dsk = new PndDsk("DSK", kTRUE);
85  // Dsk->SetStoreCerenkovs(kFALSE);
86  // Dsk->SetStoreTrackPoints(kFALSE);
87  // fRun->AddModule(Dsk);
88  // //------------------------- MDT -----------------
89  // PndMdt *Muo = new PndMdt("MDT",kTRUE);
90  // Muo->SetBarrel("fast");
91  // Muo->SetEndcap("fast");
92  // Muo->SetMuonFilter("fast");
93  // Muo->SetForward("fast");
94  // Muo->SetMdtMagnet(kTRUE);
95  // Muo->SetMdtMFIron(kTRUE);
96  // fRun->AddModule(Muo);
97  // //------------------------- FTS -----------------
98  // FairDetector *Fts= new PndFts("FTS", kTRUE);
99  // Fts->SetGeometryFileName("fts.geo");
100  // fRun->AddModule(Fts);
101  // //------------------------- FTOF -----------------
102  // FairDetector *FTof = new PndFtof("FTOF",kTRUE);
103  // FTof->SetGeometryFileName("ftofwall.root");
104  // fRun->AddModule(FTof);
105  // //------------------------- RICH ----------------
106  // FairDetector *Rich= new PndRich("RICH",kFALSE);
107  // Rich->SetGeometryFileName("rich_v2_shift.geo");
108  // fRun->AddModule(Rich);
109 
110  // Set Random Number seed
111  Int_t rndm=0;
112  if (gSystem->Getenv("RANDOM")) {
113  rndm = atoi(gSystem->Getenv("RANDOM"));
114  }
115  gRandom->SetSeed(rndm); // Set 0 to use the current time
116  cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
117 
118  // Create and Set Event Generator
119  //-------------------------------
120  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
121  fRun->SetGenerator(primGen);
122 
123  // Box Generator
124  FairBoxGenerator* boxGen = new FairBoxGenerator(pdg, 1);// 211 = pion, 321 = kaon; 13 = muon-; 1 = multipl.
125 
126  // boxGen->SetPRange(0,4);
127  // boxGen->SetPhiRange(3.84, 3.84);
128  // boxGen->SetPhiRange(3.84, 3.84);
129  // boxGen->SetThetaRange(131.53,131.53);
130 
131  boxGen->SetPRange(mom,mom);
132  boxGen->SetPhiRange(phi, phi); // Azimuth angle range [degree]
133  boxGen->SetThetaRange(theta,theta); // Polar a1ngle in lab system range [degree]
134  primGen->AddGenerator(boxGen);
135 
136  fRun->SetStoreTraj(kTRUE); // to store particle trajectories
137 
138  // Create and Set Magnetic Field
139  //-------------------------------
140  PndMultiField *fField= new PndMultiField("FULL");
141  // fRun->SetField(fField);
142 
143  fRun->Init();
144 
145  // FairTrajFilter* trajFilter = FairTrajFilter::Instance();
146  // trajFilter->SetStorePrimaries(kFALSE);
147  // trajFilter->SetStoreSecondaries(kTRUE);
148 
149  fRun->Run(nEvents);
150 
151  rtdb->setOutput(output);
152  rtdb->saveOutput();
153  rtdb->print();
154 
155  timer.Stop();
156 
157  Double_t rtime = timer.RealTime();
158  Double_t ctime = timer.CpuTime();
159  cout << endl << endl;
160  cout << "Macro finished succesfully." << endl;
161  cout << "Output file is " << outFile << endl;
162  cout << "Parameter file is " << parFile << endl;
163  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
164  return 0;
165 }
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)
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 outFile
Definition: hit_dirc.C:17
Double_t mom
Definition: plot_dirc.C:14
void StopChargedTrackAfterDIRC(Bool_t sctad=kTRUE)
Kill charged track by exiting the DIRC to avoid it hitting the large EV.
Definition: PndDrc.h:58
void SetTransportEffAtProduction(Bool_t tra=kFALSE)
Kill photons at production point according to the transport efficiency distribution.
Definition: PndDrc.h:85
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
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
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
Definition: PndCave.h:8