FairRoot/PandaRoot
Functions
emc_correction_QA_data_production.C File Reference

Go to the source code of this file.

Functions

int emc_correction_QA_data_production (Int_t nEvents=10, TString part="gamma", TString TransportModel="TGeant3", TString emcModule="TS", TString energyRange="all", UInt_t seed=0)
 

Function Documentation

int emc_correction_QA_data_production ( Int_t  nEvents = 10,
TString  part = "gamma",
TString  TransportModel = "TGeant3",
TString  emcModule = "TS",
TString  energyRange = "all",
UInt_t  seed = 0 
)

Set the digitization parameters

Get the run time data base for this session and set the needed input

Parameters created for this simulation goes to the out put

Add Hit producer task to the simulation

Initialize the session

After initialization now we can save the field parameters

All parameters are initialized and ready to be saved

Definition at line 6 of file emc_correction_QA_data_production.C.

References Bool_t, boxGen, Cave, ctime, digiFile, Dipole, Double_t, Drc, Dsk, Emc, emcDigiFile, emcHdrFiller, emcHitProd, emcHitsToWaveform, emcMakeBump, emcMakeCluster, emcWaveformToDigi, fField, fRun, Fts, gDebug, Gem, kParameterMerged, Magnet, Muo, Mvd, nEvents, output, Par, parIo1, Pipe, primGen, printf(), rtdb, rtime, seed, PndMdt::SetBarrel(), PndMdt::SetEndcap(), PndMdt::SetForward(), PndEmc::SetGeometryVersion(), PndMdt::SetMdtMagnet(), PndMdt::SetMdtMFIron(), PndMdt::SetMuonFilter(), PndMultiFieldPar::SetParameters(), PndDrc::SetRunCherenkov(), PndEmcMakeCluster::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcHitProducer::SetStorageOfData(), PndEmc::SetStorageOfData(), PndDsk::SetStoreCerenkovs(), PndDsk::SetStoreTrackPoints(), Stt, timer, and TString.

7 {
8  gRandom->SetSeed(seed);
9  Double_t phi_min = 0; Double_t phi_max = 360;
10 
11  if (emcModule=="TS")
12  {
13  Double_t theta_min = 5; Double_t theta_max = 172;
14  }
15  else if (emcModule=="barrel")
16  {
17  Double_t theta_min = 22; Double_t theta_max = 140;
18  }
19  else if (emcModule=="fwd")
20  {
21  Double_t theta_min = 5.; Double_t theta_max = 22.;
22  }
23  else if (emcModule=="bwd")
24  {
25  Double_t theta_min = 147; Double_t theta_max = 172;
26  }
27  else if (emcModule=="shashlyk")
28  {
29  Double_t theta_min = 0; Double_t theta_max = 10;
30  } else if (emcModule=="all")
31  {
32  Double_t theta_min = 0; Double_t theta_max = 172;
33  }
34  else
35  {
36  std::cout<<"Incorrect emcModule parameter: "<<emcModule<<std::endl;
37  abort();
38  }
39 
40  // energyRange= "low", "high", "all"
41  if (energyRange=="low")
42  {
43  Double_t momentum_min = 0.0; Double_t momentum_max = 1.5;
44  } else if (energyRange=="high")
45  {
46  Double_t momentum_min = 1.0; Double_t momentum_max = 10.0;
47  } else if (energyRange=="all")
48  {
49  Double_t momentum_min = 0.0; Double_t momentum_max = 10.0;
50  } else if (energyRange=="1GeV")
51  {
52  Double_t momentum_min = 1.0; Double_t momentum_max = 1.0;
53  } else
54  {
55  std::cout<<"Incorrect parameter energyRange: "<<energyRange<<std::endl;
56  abort();
57  }
58 
59  TString s1; s1+=seed;
60 
61  TString OutputSimFile = "emc_complete";
62  OutputSimFile = OutputSimFile+"_"+part+"_"+energyRange+"_"+TransportModel+
63  "_"+emcModule+"_"+s1+"_QA.root";
64  TString OutputDatabaseFile = "simparams";
65  OutputDatabaseFile = OutputDatabaseFile+"_"+part+"_"energyRange+"_"+TransportModel+
66  "_"+emcModule+"_"+s1+"_QA.root";
67 
68  TStopwatch timer;
69  timer.Start();
70  gDebug=0;
71 
72  FairLogger::GetLogger()->SetLogToFile(kFALSE);
73  FairRunSim *fRun = new FairRunSim();
74 
75  TString digiFile = "emc.par";
76 
77  // set the MC version used
78  // ------------------------
79 
80  fRun->SetName(TransportModel);
81 
82 
83  fRun->SetOutputFile(OutputSimFile);
84 
85 
88  TString emcDigiFile = gSystem->Getenv("VMCWORKDIR");
89  emcDigiFile += "/macro/params/";
90  emcDigiFile += digiFile;
91 
93  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
94  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
95  parIo1->open(emcDigiFile.Data(),"in");
96  rtdb->setFirstInput(parIo1);
98 
100  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
101  output->open(OutputDatabaseFile);
102  rtdb->setOutput(output);
103 
104 
105 
106  // Set Material file Name
107  //-----------------------
108  fRun->SetMaterials("media_pnd.geo");
109 
110  // Create and add detectors
111  //-------------------------
112  FairModule *Cave= new PndCave("CAVE");
113  Cave->SetGeometryFileName("pndcave.geo");
114  fRun->AddModule(Cave);
115 
116  PndEmc *Emc = new PndEmc("EMC",kTRUE);
117  Emc->SetGeometryVersion(1);
118  Emc->SetStorageOfData(kFALSE);
119  fRun->AddModule(Emc);
120 
121  FairModule *Magnet= new PndMagnet("MAGNET");
122  Magnet->SetGeometryFileName("FullSuperconductingSolenoid_v831.root");
123  fRun->AddModule(Magnet);
124 
125  FairModule *Dipole= new PndMagnet("MAGNET");
126  Dipole->SetGeometryFileName("dipole.geo");
127  fRun->AddModule(Dipole);
128 
129  FairModule *Pipe= new PndPipe("PIPE");
130  Pipe->SetGeometryFileName("beampipe_201309.root");
131  fRun->AddModule(Pipe);
132 
133  FairDetector *Stt= new PndStt("STT", kTRUE);
134  Stt->SetGeometryFileName("straws_skewed_blocks_35cm_pipe.geo");
135  fRun->AddModule(Stt);
136 
137  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
138  Mvd->SetGeometryFileName("Mvd-2.1_FullVersion.root");
139  fRun->AddModule(Mvd);
140 
141  PndMdt *Muo = new PndMdt("MDT",kTRUE);
142  Muo->SetBarrel("fast");
143  Muo->SetEndcap("fast");
144  Muo->SetMuonFilter("fast");
145  Muo->SetForward("fast");
146  Muo->SetMdtMagnet(kTRUE);
147  Muo->SetMdtMFIron(kTRUE);
148  fRun->AddModule(Muo);
149 
150  FairDetector *Gem = new PndGemDetector("GEM", kTRUE);
151  Gem->SetGeometryFileName("gem_3Stations.root");
152  fRun->AddModule(Gem);
153  //------------------------- SCITIL -----------------
154  FairDetector *SciT = new PndSciT("SCIT",kTRUE);
155  SciT->SetGeometryFileName("barrel-SciTil_07022013.root");
156  fRun->AddModule(SciT);
157 
158  PndDsk* Dsk = new PndDsk("DSK", kTRUE);
159  Dsk->SetGeometryFileName("dsk.root");
160  Dsk->SetStoreCerenkovs(kFALSE);
161  Dsk->SetStoreTrackPoints(kFALSE);
162  fRun->AddModule(Dsk);
163 
164  //------------------------- DRC -----------------
165  PndDrc *Drc = new PndDrc("DIRC", kTRUE);
166  Drc->SetGeometryFileName("dirc_l0_p0_updated.root");
167  Drc->SetRunCherenkov(kFALSE);
168  fRun->AddModule(Drc);
169 
170  FairDetector *Fts= new PndFts("FTS", kTRUE);
171  Fts->SetGeometryFileName("fts.geo");
172  fRun->AddModule(Fts);
173 
174  // Create and Set Event Generator
175  //-------------------------------
176 
177  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
178  fRun->SetGenerator(primGen);
179 
180  TDatabasePDG *pdg = new TDatabasePDG();
181  Int_t part_pid = pdg->GetParticle(part)->PdgCode();
182 
183  // Box Generator:
184  FairBoxGenerator* boxGen = new FairBoxGenerator(part_pid, 1); // 13 = muon; 1 = multipl. // 211 = pi+
185  // first number: PDG particle code: 2nd number: particle multiplicity per event
186 
187  boxGen->SetPRange(momentum_min,momentum_max); // GeV/c
188  // boxGen->SetPtRange(1.,1.); // GeV/c
189  boxGen->SetPhiRange(phi_min, phi_max); // Azimuth angle range [degree]
190  boxGen->SetThetaRange(theta_min, theta_max); // Polar angle in lab system range [degree]
191  boxGen->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
192  primGen->AddGenerator(boxGen);
193 
194  // fRun->SetStoreTraj(kTRUE); // to store particle trajectories
195  fRun->SetBeamMom(15);
196  //---------------------Create and Set the Field(s)----------
197  PndMultiField *fField= new PndMultiField("FULL");
198  fRun->SetField(fField);
199 
204  emcHitProd->SetStorageOfData(kFALSE);//FALSE);
205  fRun->AddTask(emcHitProd);
206 
209  emcHitsToWaveform->SetStorageOfData(kFALSE);
210  emcWaveformToDigi->SetStorageOfData(kTRUE);
211  fRun->AddTask(emcHitsToWaveform); // full digitization
212  fRun->AddTask(emcWaveformToDigi); // full digitization
213 
215  emcMakeCluster->SetStorageOfData(kTRUE);
216  fRun->AddTask(emcMakeCluster);
217 
219  fRun->AddTask(emcHdrFiller); // ECM header
220 
222  emcMakeBump->SetStorageOfData(kTRUE);
223  fRun->AddTask(emcMakeBump);
224 
226  fRun->Init();
228  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
229  if (fField) { Par->SetParameters(fField); }
230  Par->setInputVersion(fRun->GetRunId(),1);
231  Par->setChanged();
232 
234  rtdb->saveOutput();
235  // rtdb->print();
236 
237  fRun->Run(nEvents);
238  timer.Stop();
239 
240  Double_t rtime = timer.RealTime();
241  Double_t ctime = timer.CpuTime();
242  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
243 
244  return 0;
245 }
PndDrc * Drc
Definition: sim_emc_apd.C:75
Takes list of PndEmcHits and creates PndEmcWaveform.
PndMultiField * fField
Definition: sim_emc_apd.C:97
void SetForward(TString name)
Definition: PndMdt.h:34
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
PndEmcHitsToWaveform * emcHitsToWaveform
Definition: full_emc.C:60
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
creates PndEmcHits from PndEmcPoints
PndEmc * Emc
Definition: sim_emc_apd.C:55
TString digiFile
Definition: bump_emc.C:20
FairDetector * Mvd
Definition: sim_emc_apd.C:51
void SetMdtMFIron(bool opt=false)
Definition: PndMdt.h:29
void SetStorageOfData(Bool_t val)
Definition: PndEmc.cxx:941
PndEmcMakeBump * emcMakeBump
Definition: bump_emc.C:63
TString emcDigiFile
Definition: bump_emc.C:45
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
PndEmcHdrFiller * emcHdrFiller
Definition: full_emc.C:68
FairDetector * Dsk
Definition: run_DpmSim.C:66
FairRunAna * fRun
Definition: hit_dirc.C:58
FairDetector * Gem
Definition: runJohan.C:71
void SetStorageOfData(Bool_t val)
void SetMdtMagnet(bool opt=false)
Definition: PndMdt.h:27
void SetStorageOfData(Bool_t val)
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 * Dipole
Definition: sim_emc_apd.C:40
FairModule * Cave
Definition: sim_emc_apd.C:32
PndEmcMakeCluster * emcMakeCluster
Definition: full_emc.C:65
Definition: PndDrc.h:31
Int_t nEvents
Definition: hit_dirc.C:11
unsigned int seed
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
void SetStorageOfData(Bool_t val)
PndEmcHitProducer * emcHitProd
void SetStorageOfData(Bool_t val)
Method to specify whether bumps are stored or not.
Takes clusters and slits them up into bumps.
Double_t ctime
Definition: hit_dirc.C:114
PndEmcWaveformToDigi * emcWaveformToDigi
Definition: full_emc.C:61
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
Task to cluster PndEmcDigis.
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
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
Definition: PndStt.h:34
Definition: PndMdt.h:20
Takes list of PndEmcWaveform and creates PndEmcDigi.
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
Task to create Emc header.
FairModule * Magnet
Definition: sim_emc_apd.C:36
Definition: PndFts.h:25
Definition: PndCave.h:8