FairRoot/PandaRoot
Functions
error_matrix_data_production.C File Reference

Go to the source code of this file.

Functions

 error_matrix_data_production (Int_t emcGeometry=17, Int_t emc_component=1, Int_t nEvents=10)
 

Function Documentation

error_matrix_data_production ( Int_t  emcGeometry = 17,
Int_t  emc_component = 1,
Int_t  nEvents = 10 
)

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

Definition at line 2 of file error_matrix_data_production.C.

References Bool_t, boxGen, Cave, ctime, Double_t, Emc, emcHdrFiller, emcHitProd, emcHitsToWaveform, emcMakeBump, emcMakeCluster, emcWaveformToDigi, exit(), fField, fRun, gDebug, kParameterMerged, Magnet, nEvents, outFile, output, Par, parIo1, Pipe, primGen, printf(), rootlogon(), rtdb, rtime, PndEmc::SetGeometryVersion(), PndMultiFieldPar::SetParameters(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcHitProducer::SetStorageOfData(), PndEmc::SetStorageOfData(), timer, and TString.

2  {
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 }
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)
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