FairRoot/PandaRoot
error_matrix_data_production.C
Go to the documentation of this file.
1 // Macro perform simulation-digitization-reconstruction of EMC for calculation of error matrix
2 error_matrix_data_production(Int_t emcGeometry=17, Int_t emc_component=1, Int_t nEvents=10){
3 // emc_component: 1 - barrel, 2 - fwd endcap, 3 - bwd endcap, 4 - shashlyk
4  TStopwatch timer;
5  timer.Start();
6  gDebug=0;
7  // Load basic libraries
8  // If it does not work, please check the path of the libs and put it by hands
9  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
10  rootlogon();
11 
12  FairRunSim *fRun = new FairRunSim();
13 
14  TString inparfile = "emc.par";
15  TString outparFile = "simparams.root";
16 
17  TString outFile="emc_data_";
18  outFile+=emcGeometry;
19  outFile+="_";
20  outFile+=emc_component;
21  outFile+=".root";
22 
23  // Set energy and theta range for the given EMC component
24  Double_t e_min, e_max, theta_min, theta_max;
25  switch (emc_component)
26  {
27  case 1:
28  e_min = 0.1; e_max=5.0; theta_min=25.0; theta_max=135.0;
29  break;
30  case 2:
31  e_min = 0.1; e_max=7.0; theta_min=10.0; theta_max=20.0;
32  break;
33  case 3:
34  e_min = 0.1; e_max=7.0; theta_min=155.0; theta_max=165.0;
35  break;
36  case 4:
37  e_min = 0.5; e_max=7.0; theta_min=0.0; theta_max=5.0;
38  break;
39  default:
40  std::cout<<"Wrong EMC component"<<std::endl;
41  exit(0);
42  }
43 
44 
45  // set the MC version used
46  // ------------------------
47 
48  fRun->SetName("TGeant3");
49  //fRun->SetName("TGeant4");
50 
51  fRun->SetOutputFile(outFile.Data());
52 
55  TString emcInparfile = gSystem->Getenv("VMCWORKDIR");
56  emcInparfile += "/macro/params/";
57  emcInparfile += inparfile;
59  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
60  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
61  parIo1->open(emcInparfile.Data(),"in");
62  rtdb->setFirstInput(parIo1);
64 
66  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
67  output->open(outparFile.Data());
68  rtdb->setOutput(output);
69 
70  // Set Material file Name
71  //-----------------------
72  fRun->SetMaterials("media_pnd.geo");
73 
74  // Create and add detectors
75  //-------------------------
76  FairModule *Cave= new PndCave("CAVE");
77  Cave->SetGeometryFileName("pndcave.geo");
78  fRun->AddModule(Cave);
79 
80  FairModule *Magnet= new PndMagnet("MAGNET");
81  Magnet->SetGeometryFileName("magnet.geo");
82  fRun->AddModule(Magnet);
83 
84  FairModule *Pipe= new PndPipe("PIPE");
85  Pipe->SetGeometryFileName("pipe.geo");
86  fRun->AddModule(Pipe);
87 
88  //------------------------- EMC -----------------
89 
90  PndEmc *Emc = new PndEmc("EMC",kTRUE);
91  Emc->SetGeometryVersion(emcGeometry);
92  Emc->SetStorageOfData(kFALSE);
93  fRun->AddModule(Emc);
94 
95  // Create and Set Event Generator
96  //-------------------------------
97 
98  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
99  fRun->SetGenerator(primGen);
100 
101  // Box Generator:
102  FairBoxGenerator* boxGen = new FairBoxGenerator(22, 1);
103  boxGen->SetPRange(e_min,e_max); // GeV/c
104  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
105  boxGen->SetThetaRange(theta_min, theta_max); // Polar angle in lab system range [degree]
106  boxGen->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
107  primGen->AddGenerator(boxGen);
108 
109  // fRun->SetStoreTraj(kTRUE); // to store particle trajectories
110  fRun->SetBeamMom(15);
111  //---------------------Create and Set the Field(s)----------
112  PndMultiField *fField= new PndMultiField("FULL");
113  fRun->SetField(fField);
114 
119  emcHitProd->SetStorageOfData(kFALSE);
120  fRun->AddTask(emcHitProd);
121 
124  emcHitsToWaveform->SetStorageOfData(kFALSE);
125  //emcWaveformToDigi->SetStorageOfData(kFALSE);
126  fRun->AddTask(emcHitsToWaveform); // full digitization
127  fRun->AddTask(emcWaveformToDigi); // full digitization
128 
130  //emcMakeCluster->SetStorageOfData(kFALSE);
131  fRun->AddTask(emcMakeCluster);
132 
134  fRun->AddTask(emcHdrFiller); // ECM header
135 
137  //emcMakeBump->SetStorageOfData(kFALSE);
138  fRun->AddTask(emcMakeBump);
139 
140 
142  fRun->Init();
144  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
145  if (fField) { Par->SetParameters(fField); }
146  Par->setInputVersion(fRun->GetRunId(),1);
147  Par->setChanged();
148 
149  rtdb->saveOutput();
150  // rtdb->print();
151 
152  // Transport nEvents
153  // -----------------
154  fRun->Run(nEvents);
155 
156  std::cout<<"Simulation complete"<<std::endl;
157 
158  timer.Stop();
159  Double_t rtime = timer.RealTime();
160  Double_t ctime = timer.CpuTime();
161  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
162 
163 }
164 
Takes list of PndEmcHits and creates PndEmcWaveform.
PndMultiField * fField
Definition: sim_emc_apd.C:97
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)
exit(0)
TString outFile
Definition: hit_dirc.C:17
creates PndEmcHits from PndEmcPoints
PndEmc * Emc
Definition: sim_emc_apd.C:55
void SetStorageOfData(Bool_t val)
Definition: PndEmc.cxx:941
PndEmcMakeBump * emcMakeBump
Definition: bump_emc.C:63
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
PndEmcHdrFiller * emcHdrFiller
Definition: full_emc.C:68
FairRunAna * fRun
Definition: hit_dirc.C:58
void SetStorageOfData(Bool_t val)
void SetStorageOfData(Bool_t val)
error_matrix_data_production(Int_t emcGeometry=17, Int_t emc_component=1, Int_t nEvents=10)
Double_t
FairModule * Cave
Definition: sim_emc_apd.C:32
PndEmcMakeCluster * emcMakeCluster
Definition: full_emc.C:65
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
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
PndEmcHitProducer * emcHitProd
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.
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
Takes list of PndEmcWaveform and creates PndEmcDigi.
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
Task to create Emc header.
FairModule * Magnet
Definition: sim_emc_apd.C:36
Definition: PndCave.h:8