FairRoot/PandaRoot
Functions
emc_complete.C File Reference

Go to the source code of this file.

Functions

 emc_complete (Int_t nEvents=10, Float_t mom=1.)
 

Function Documentation

emc_complete ( Int_t  nEvents = 10,
Float_t  mom = 1. 
)

Modified 17.12.08 by M. Al-Turany The hit producing is added to the simulation session, so that the EmcHits are produced on the fly during the simulation

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 9 of file emc_complete.C.

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

9  {
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 }
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
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
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