FairRoot/PandaRoot
QA/run3/rad_complete.C
Go to the documentation of this file.
1 // Macro for running Panda simulation with Geant3 or Geant4 (M. Al-Turany)
2 // This macro is supposed to run the full simulation of the panda detector and
3 // to store data for the calculation of radiation lenght
4 // to run the macro:
5 // root rad_complete.C or in root session root>.x rad_complete.C
6 // to run with different options:(e.g more events, different momentum, Geant4)
7 // root rad_complete.C"(100, "TGeant4",2)"
8 
9 rad_complete(Int_t nEvents = 10, TString SimEngine ="TGeant3", Float_t mom = 7.24)
10 {
11  //-----User Settings:-----------------------------------------------
12  TString OutputFile ="sim_complete.root";
13  TString ParOutputfile ="simparams.root";
14  Double_t BeamMomentum =15.0; // beam momentum ONLY for the scaling of the dipole field. For the generator use "mom"
15  TString MediaFile ="media_pnd.geo";
16  gDebug = 0;
17 
18  //------------------------------------------------------------------
19 
20  TStopwatch timer;
21  timer.Start();
22 
23  // Load basic libraries---------------------------------------------
24  gRandom->SetSeed();
25  // Create the Simulation run manager--------------------------------
26  FairRunSim *fRun = new FairRunSim();
27  fRun->SetName(SimEngine.Data() );
28  fRun->SetOutputFile(OutputFile.Data());
29  fRun->SetBeamMom(BeamMomentum);
30  fRun->SetMaterials(MediaFile.Data());
31  fRun->SetUseFairLinks(kTRUE);
32  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
33 
34  //---------------------Set Parameter output ----------
36  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
37  output->open(ParOutputfile.Data());
38  rtdb->setOutput(output);
39 
40  fRun->SetRadLenRegister(kTRUE);
41 
42  // Create and add detectors
43 
44  //------------------------- CAVE -----------------
45 
46  FairModule *Cave= new PndCave("CAVE");
47  Cave->SetGeometryFileName("pndcave.geo");
48  fRun->AddModule(Cave);
49  //------------------------- Magnet -----------------
50  /*
51  FairModule *Magnet= new PndMagnet("MAGNET");
52  //Magnet->SetGeometryFileName("FullSolenoid_V842.root");
53  Magnet->SetGeometryFileName("FullSuperconductingSolenoid_v831.root");
54  fRun->AddModule(Magnet);
55  FairModule *Dipole= new PndMagnet("MAGNET");
56  Dipole->SetGeometryFileName("dipole.geo");
57  fRun->AddModule(Dipole);
58  */
59  //------------------------- Pipe -----------------
60  FairModule *Pipe= new PndPipe("PIPE");
61  Pipe->SetGeometryFileName("beampipe_201112.root");
62  fRun->AddModule(Pipe);
63  //------------------------- STT -----------------
64  FairDetector *Stt= new PndStt("STT", kFALSE);
65  Stt->SetGeometryFileName("straws_skewed_blocks_35cm_pipe.geo");
66  fRun->AddModule(Stt);
67  //------------------------- MVD -----------------
68  FairDetector *Mvd = new PndMvdDetector("MVD", kFALSE);
69  Mvd->SetGeometryFileName("Mvd-2.1_FullVersion.root");
70  fRun->AddModule(Mvd);
71  //------------------------- GEM -----------------
72  FairDetector *Gem = new PndGemDetector("GEM", kFALSE);
73  Gem->SetGeometryFileName("gem_3Stations.root");
74  fRun->AddModule(Gem);
75  //------------------------- EMC -----------------
76  PndEmc *Emc = new PndEmc("EMC",kFALSE);
77  Emc->SetGeometryVersion(1);
78  Emc->SetStorageOfData(kFALSE);
79  fRun->AddModule(Emc);
80  //------------------------- SCITIL -----------------
81  FairDetector *SciT = new PndSciT("SCIT",kFALSE);
82  SciT->SetGeometryFileName("SciTil_201508.root");
83  fRun->AddModule(SciT);
84  //------------------------- DRC -----------------
85  PndDrc *Drc = new PndDrc("DIRC", kFALSE);
86  Drc->SetGeometryFileName("dirc_l0_p0_updated.root");
87  Drc->SetRunCherenkov(kFALSE);
88  fRun->AddModule(Drc);
89  //------------------------- DISC -----------------
90  PndDsk* Dsk = new PndDsk("DSK", kFALSE);
91  Dsk->SetStoreCerenkovs(kFALSE);
92  Dsk->SetStoreTrackPoints(kFALSE);
93  fRun->AddModule(Dsk);
94  //------------------------- MDT -----------------
95  PndMdt *Muo = new PndMdt("MDT",kFALSE);
96  Muo->SetBarrel("fast");
97  Muo->SetEndcap("fast");
98  Muo->SetMuonFilter("fast");
99  Muo->SetForward("fast");
100  Muo->SetMdtMagnet(kTRUE);
101  Muo->SetMdtMFIron(kTRUE);
102  fRun->AddModule(Muo);
103  //------------------------- FTS -----------------
104  FairDetector *Fts= new PndFts("FTS", kFALSE);
105  Fts->SetGeometryFileName("fts.geo");
106  fRun->AddModule(Fts);
107  //------------------------- FTOF -----------------
108  FairDetector *FTof = new PndFtof("FTOF",kFALSE);
109  FTof->SetGeometryFileName("ftofwall.root");
110  fRun->AddModule(FTof);
111  //------------------------- RICH ----------------
112  FairDetector *Rich= new PndRich("RICH",kFALSE);
113  Rich->SetGeometryFileName("rich_v2.geo");
114  fRun->AddModule(Rich);
115 
116  // Create and Set Event Generator
117  //-------------------------------
118  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
119  fRun->SetGenerator(primGen);
120 
121  FairBoxGenerator* boxGen = new FairBoxGenerator(0, 10); // 0 = geantino; 10 = multipl.
122  boxGen->SetPtRange(mom,mom); // GeV/c
123  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
124  boxGen->SetThetaRange(0., 90.); // Polar angle in lab system range [degree]
125  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
126  primGen->AddGenerator(boxGen);
127 
128  //---------------------Create and Set the Field(s)----------
129  PndMultiField *fField= new PndMultiField("FULL");
130  fRun->SetField(fField);
131 
132  // EMC Hit producer
133  //-------------------------------
135  fRun->AddTask(emcHitProd);
136 
137  //------------------------- Initialize the RUN -----------------
138  fRun->Init();
139  //------------------------- Run the Simulation -----------------
140  fRun->Run(nEvents);
141  //------------------------- Save the parameters -----------------
142  rtdb->saveOutput();
143  //------------------------Print some info and exit----------------
144  timer.Stop();
145  Double_t rtime = timer.RealTime();
146  Double_t ctime = timer.CpuTime();
147  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
148 
149  cout << " Test passed" << endl;
150  cout << " All ok " << endl;
151 
152  return 0;
153 
154 }
155 
PndDrc * Drc
Definition: sim_emc_apd.C:75
PndMultiField * fField
Definition: sim_emc_apd.C:97
void SetForward(TString name)
Definition: PndMdt.h:34
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
FairDetector * FTof
Definition: sim_ftof.C:49
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
rad_complete(Int_t nEvents=10, TString SimEngine="TGeant3", Float_t mom=7.24)
creates PndEmcHits from PndEmcPoints
PndEmc * Emc
Definition: sim_emc_apd.C:55
FairDetector * Mvd
Definition: sim_emc_apd.C:51
void SetMdtMFIron(bool opt=false)
Definition: PndMdt.h:29
Double_t mom
Definition: plot_dirc.C:14
void SetStorageOfData(Bool_t val)
Definition: PndEmc.cxx:941
double BeamMomentum
Definition: sim_ftof_stof.C:17
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
PndMdt * Muo
Definition: sim_emc_apd.C:67
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairDetector * Dsk
Definition: run_DpmSim.C:66
FairRunAna * fRun
Definition: hit_dirc.C:58
FairDetector * Gem
Definition: runJohan.C:71
void SetMdtMagnet(bool opt=false)
Definition: PndMdt.h:27
void SetStoreTrackPoints(Bool_t storeTrackPoints)
Definition: PndDsk.h:148
FairDetector * Stt
Definition: sim_emc_apd.C:47
void SetStoreCerenkovs(Bool_t storeCerenkovs)
Definition: PndDsk.h:146
Double_t
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
virtual void SetGeometryVersion(const Int_t GeoNumber)
Definition: PndEmc.cxx:966
void SetBarrel(TString name)
Definition: PndMdt.h:31
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
PndEmcHitProducer * emcHitProd
Double_t ctime
Definition: hit_dirc.C:114
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
void SetEndcap(TString name)
Definition: PndMdt.h:32
void SetMuonFilter(TString name)
Definition: PndMdt.h:33
void SetRunCherenkov(Bool_t ch)
Definition: PndDrc.h:222
Definition: PndStt.h:34
Definition: PndMdt.h:20
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
FairDetector * Fts
Definition: sim_ftof_stof.C:58
Definition: PndDsk.h:23
Definition: PndFts.h:25
Definition: PndCave.h:8