FairRoot/PandaRoot
emc_complete.C
Go to the documentation of this file.
1 // Macro created 20/09/2006 by S.Spataro
2 // It creates a geant simulation file for emc
9 emc_complete(Int_t nEvents = 10, Float_t mom = 1.){
10  TStopwatch timer;
11  timer.Start();
12  gDebug=0;
13  // Load basic libraries
14  // If it does not work, please check the path of the libs and put it by hands
15  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
16  rootlogon();
17 
18  FairRunSim *fRun = new FairRunSim();
19 
20  TString digiFile = "emc.par";
21 
22  TString parFile = "simparams.root";
23 
24  // set the MC version used
25  // ------------------------
26 
27  fRun->SetName("TGeant3");
28  //fRun->SetName("TGeant4");
29 
30  fRun->SetOutputFile("emc_complete.root");
31 
34  TString emcDigiFile = gSystem->Getenv("VMCWORKDIR");
35  emcDigiFile += "/macro/params/";
36  emcDigiFile += digiFile;
38  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
39  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
40  parIo1->open(emcDigiFile.Data(),"in");
41  rtdb->setFirstInput(parIo1);
43 
45  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
46  output->open("simparams.root");
47  rtdb->setOutput(output);
48 
49  // Set Material file Name
50  //-----------------------
51  fRun->SetMaterials("media_pnd.geo");
52 
53  // Create and add detectors
54  //-------------------------
55  FairModule *Cave= new PndCave("CAVE");
56  Cave->SetGeometryFileName("pndcave.geo");
57  fRun->AddModule(Cave);
58 
59  FairModule *Magnet= new PndMagnet("MAGNET");
60  Magnet->SetGeometryFileName("magnet.geo");
61  fRun->AddModule(Magnet);
62 
63  FairModule *Pipe= new PndPipe("PIPE");
64  Pipe->SetGeometryFileName("pipe.geo");
65  fRun->AddModule(Pipe);
66 
67  PndEmc *Emc = new PndEmc("EMC",kTRUE);
68  Emc->SetGeometryVersion(15);
69  //new BwEndCap + FwEndCap
70  //Emc->SetGeometryFileNameTriple("emc_module125.dat","emc_module3new.root","emc_module4_StraightGeo24.4.root"); //MapperVersion: 6
71  Emc->SetStorageOfData(kFALSE);
72  fRun->AddModule(Emc);
73 
74  // Create and Set Event Generator
75  //-------------------------------
76 
77  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
78  fRun->SetGenerator(primGen);
79 
80  // Box Generator:
81  FairBoxGenerator* boxGen = new FairBoxGenerator(22, 5); // 13 = muon; 1 = multipl. // 211 = pi+
82  // first number: PDG particle code: 2nd number: particle multiplicity per event
83 
84  boxGen->SetPRange(1.,1.); // GeV/c
85  // boxGen->SetPtRange(1.,1.); // GeV/c
86  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
87  boxGen->SetThetaRange(0., 180.); // Polar angle in lab system range [degree]
88  boxGen->SetXYZ(0., 0., 0.); // vertex coordinates [mm]
89  primGen->AddGenerator(boxGen);
90 
91  // fRun->SetStoreTraj(kTRUE); // to store particle trajectories
92  fRun->SetBeamMom(15);
93  //---------------------Create and Set the Field(s)----------
94  PndMultiField *fField= new PndMultiField("FULL");
95  fRun->SetField(fField);
96 
101  emcHitProd->SetStorageOfData(kFALSE);
102  fRun->AddTask(emcHitProd);
103 
106  emcHitsToWaveform->SetStorageOfData(kFALSE);
107  emcWaveformToDigi->SetStorageOfData(kFALSE);
108  fRun->AddTask(emcHitsToWaveform); // full digitization
109  fRun->AddTask(emcWaveformToDigi); // full digitization
110 
112  emcMakeCluster->SetStorageOfData(kFALSE);
113  fRun->AddTask(emcMakeCluster);
114 
116  fRun->AddTask(emcHdrFiller); // ECM header
117 
119  emcMakeBump->SetStorageOfData(kFALSE);
120  fRun->AddTask(emcMakeBump);
121 
123  fRun->AddTask(emcMakeRecoHit);
124 
125 
127  fRun->Init();
128  //PndEmcMapper *emcMap = PndEmcMapper::Instance(6);
130  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
131  if (fField) { Par->SetParameters(fField); }
132  Par->setInputVersion(fRun->GetRunId(),1);
133  Par->setChanged();
134 
136  rtdb->saveOutput();
137  // rtdb->print();
138 
139  // Transport nEvents
140  // -----------------
141  fRun->Run(nEvents);
142 
143  timer.Stop();
144 
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 }
150 
Takes list of PndEmcHits and creates PndEmcWaveform.
PndMultiField * fField
Definition: sim_emc_apd.C:97
void SetStorageOfData(Bool_t val)
Method to specify whether clusters are stored or not.
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Create PndEmcRecoHit from PndEmcBump.
PndEmcHitsToWaveform * emcHitsToWaveform
Definition: full_emc.C:60
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndEmcMakeRecoHit * emcMakeRecoHit
creates PndEmcHits from PndEmcPoints
PndEmc * Emc
Definition: sim_emc_apd.C:55
TString digiFile
Definition: bump_emc.C:20
Double_t mom
Definition: plot_dirc.C:14
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
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
TString parFile
Definition: hit_dirc.C:14
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
emc_complete(Int_t nEvents=10, Float_t mom=1.)
Definition: emc_complete.C:9
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.
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