FairRoot/PandaRoot
sim_dirc.C
Go to the documentation of this file.
2 {
3  TStopwatch timer;
4  timer.Start();
5  gDebug=0;
6  // If it does not work, please check the path of the libs and put it by hands
7  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
8  rootlogon();
9  // Load basic libraries
10  gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
11  basiclibs();
12  gRandom->SetSeed();
13 
14 
15  TString digiFile = "all.par";
16 // TString parFile = "params_testrun1.root";
17  TString parFile = "par.root";
18 
19  FairRunSim *fRun = new FairRunSim();
20 
21  // set the MC version used
22  // ------------------------
23  //fRun->SetName("TGeant3");
24  fRun->SetName("TGeant4");
25 
26  TString outfile = "sim.root";
27  fRun->SetOutputFile(outfile);
28 
29  // Set the parameters
30  //-------------------------------
31  TString allDigiFile = gSystem->Getenv("VMCWORKDIR");
32  allDigiFile += "/macro/params/";
33  allDigiFile += digiFile;
34 
35  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
36  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
37  parIo1->open(allDigiFile.Data(),"in");
38  rtdb->setFirstInput(parIo1);
40 
41  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
42  output->open(parFile);
43  rtdb->setOutput(output);
44 
45  // Set Material file Name
46  //-----------------------
47  fRun->SetMaterials("media_pnd.geo");
48 
49  // Create and add detectors
50  //-------------------------
51  FairModule *Cave= new PndCave("CAVE");
52  Cave->SetGeometryFileName("pndcave.geo");
53  fRun->AddModule(Cave);
54 
55  //FairModule *Magnet= new PndMagnet("MAGNET");
57  //Magnet->SetGeometryFileName("FullSuperconductingSolenoid_v831.root");
58  //fRun->AddModule(Magnet);
59 
60  //FairModule *Dipole= new PndMagnet("MAGNET");
61  //Dipole->SetGeometryFileName("dipole.geo");
62  //fRun->AddModule(Dipole);
63 
64  //FairModule *Pipe= new PndPipe("PIPE");
65  //fRun->AddModule(Pipe);
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("MVD_v1.0_woPassiveTraps.root");
73  //fRun->AddModule(Mvd);
74 
75  //PndEmc *Emc = new PndEmc("EMC",kTRUE);
76  //Emc->SetGeometryVersion(15);
77  //Emc->SetStorageOfData(kFALSE);
78  //fRun->AddModule(Emc);
79 
80  //FairDetector *Tof = new PndTof("TOF",kTRUE);
81  //Tof->SetGeometryFileName("tofbarrel.geo");
82  //fRun->AddModule(Tof);
83 
84  //PndMdt *Muo = new PndMdt("MDT",kTRUE);
85  //Muo->SetBarrel("torino");
86  //Muo->SetEndcap("torino");
87  //Muo->SetMuonFilter("torino");
88  //Muo->SetMdtMagnet(kTRUE);
89  //Muo->SetMdtMFIron(kTRUE);
90  //fRun->AddModule(Muo);
91 
92  //FairDetector *Gem = new PndGemDetector("GEM", kTRUE);
93  //Gem->SetGeometryFileName("gem_3Stations.root");
94  //fRun->AddModule(Gem);
95 
96  PndDrc *Drc = new PndDrc("DIRC", kTRUE);
97  Drc->SetRunCherenkov(kTRUE); // for fast sim Cherenkov -> kFALSE
98  // set reflectivity for the mirror at the bar end, in case of kFALSE reflectivity = 1 = const.
99  Drc->SetMirrorReal(kTRUE);
100  Drc->SetDetEffAtProduction(kTRUE);
101  Drc->StopSecondaries(kTRUE);
102  Drc->SetStopTime(200.);
103  Drc->SetVerboseLevel(0);
104  Drc->SetOnlyDirectPho(kFALSE);
105  // put the geometry file you want into the next line:
106  TString geomname = "dirc_plate.root";
107  //TString geomname = "dirc_g2_l4.root";
108  Drc->SetGeometryFileName(geomname);
109  fRun->AddModule(Drc);
110 
111  // Create and Set Event Generator
112  //-------------------------------
113 
114  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
115  fRun->SetGenerator(primGen);
116 
117  // Box Generator
118  Int_t mult = 1;
119  Int_t pdg = 211; // 13 = muon; 321 = kaon; 211 = pion; 2212 = proton; 1 = multipl.
120  FairBoxGenerator* boxGen = new FairBoxGenerator(pdg, mult);
121  Double_t mom_min = 1.0;
122  Double_t mom_max = 1.0;
123  boxGen->SetPRange(mom_min,mom_max); // GeV/c
124  boxGen->SetPhiRange(15., 15.); // Azimuth angle range [degree]
125  boxGen->SetThetaRange(22., 22.); // Polar angle in lab system range [degree]
126  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
127  primGen->AddGenerator(boxGen);
128 
129  fRun->SetStoreTraj(kTRUE); // to store particle trajectories
130 
131  // Create and Set Magnetic Field
132  //-------------------------------
133  fRun->SetBeamMom(15);
134  PndMultiField *fField= new PndMultiField("FULL");
135  //fRun->SetField(fField);
136 
137  // EMC Hit producer
138  //-------------------------------
139  //PndEmcHitProducer* emcHitProd = new PndEmcHitProducer();
140  //fRun->AddTask(emcHitProd);
141 
143  fRun->Init();
144 
145  // Only if Geant4
146 /* if ( gMC->GetName() == TString("TGeant4") ) {
147  gROOT->LoadMacro("$VMCWORKDIR/gconfig/g4Config2.C");
148  Config2();
149  }
150 */
151  rtdb->setOutput(output);
152  rtdb->saveOutput();
153  rtdb->print();
154 
155  Int_t nEvents=10;
156 
157  // Transport nEvents
158  // -----------------
159  fRun->Run(nEvents);
160 
161  timer.Stop();
162 
163  Double_t rtime = timer.RealTime();
164  Double_t ctime = timer.CpuTime();
165  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
166 
167 }
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)
basiclibs()
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
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
sim_dirc()
Definition: sim_dirc.C:1
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 SetMirrorReal(Bool_t mir=kTRUE)
Choose between ideal and real mirror:
Definition: PndDrc.h:92
Double_t rtime
Definition: hit_dirc.C:113
Double_t mult
TString outfile
Definition: PndCave.h:8