FairRoot/PandaRoot
DigiComplete.cxx
Go to the documentation of this file.
1 #include "DigiComplete.h"
2 
3 #include <PndEmcHitsToWaveform.h>
4 #include <PndEmcWaveformToDigi.h>
5 #include <PndDchDigiProducer.h>
6 #include <PndDchCylinderHitProducer.h>
7 #include <PndMvdDigiTask.h>
8 #include <PndTofHitProducerIdeal.h>
10 #include <PndGemDigitize.h>
11 #include <PndGemFindHits.h>
13 #include <PndTpcClusterizerTask.h>
14 #include <PndTpcDriftTask.h>
15 #include <PndTpcGemTask.h>
16 #include <PndTpcPadResponseTask.h>
17 #include <PndTpcElectronicsTask.h>
18 
19 #include <FairBoxGenerator.h>
20 #include <FairEvtGenGenerator.h>
21 #include <FairModule.h>
22 #include <FairParAsciiFileIo.h>
23 #include <FairParRootFileIo.h>
24 #include <FairPrimaryGenerator.h>
25 #include <FairRunAna.h>
26 #include <FairRunSim.h>
27 #include <FairRuntimeDb.h>
28 
29 #include <TROOT.h>
30 #include <TStopwatch.h>
31 #include <TSystem.h>
32 
33 #include <iostream>
34 
35 
36 using namespace std;
37 
38 
40  TString const &digiFile, TString const &outFile)
41 {
42  gDebug = 0;
43 
44  //------------------------------------------------------------------
45 
46  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
47  Int_t iVerbose = 0; // just forget about it, for the moment
48 
49  // ----- Timer --------------------------------------------------------
50  TStopwatch timer;
51 
52  // ----- Reconstruction run -------------------------------------------
53  FairRunAna *fRun= new FairRunAna();
54  fRun->SetInputFile(inFile);
55  fRun->SetOutputFile(outFile);
56 
57  // ----- Parameter database --------------------------------------------
58  TString emcDigiFile = gSystem->Getenv("VMCWORKDIR");
59  emcDigiFile += "/macro/params/";
60  emcDigiFile += digiFile;
61 
62  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
63  FairParRootFileIo* parInput1 = new FairParRootFileIo();
64  parInput1->open(parFile.Data());
65 
66  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
67  parIo1->open(emcDigiFile.Data(),"in");
68 
69  rtdb->setFirstInput(parInput1);
70  rtdb->setSecondInput(parIo1);
71 
72 
73  // ----- EMC hit producers ---------------------------------
74  // The file name should be the same of the geometry file which was used for the simulation
75 
77  emcHitsToWaveform->SetStorageOfData(kFALSE);
79  fRun->AddTask(emcHitsToWaveform); // full digitization
80  fRun->AddTask(emcWaveformToDigi); // full digitization
81 
83  fRun->AddTask(sttHitProducer);
84 
85  QAPlotCollection* qa=new QAPlotCollection("TpcDigiQAPlots");
86 
87  PndTpcClusterizerTask* tpcClusterizer = new PndTpcClusterizerTask();
88  tpcClusterizer->SetPersistence();
89 
90  //ONLY USE THIS WHEN USING ALICE SETTINGS WITH GEANT3
91  tpcClusterizer->SetMereChargeConversion();
92 
93  fRun->AddTask(tpcClusterizer);
94 
109  PndTpcDriftTask* tpcDrifter = new PndTpcDriftTask();
110  tpcDrifter->SetPersistence();
111  tpcDrifter->SetDistort(false);
112  tpcDrifter->SetQAPlotCol(qa);
113  fRun->AddTask(tpcDrifter);
114 
115  PndTpcPadResponseTask* tpcPadResponse = new PndTpcPadResponseTask();
116  tpcPadResponse->SetPersistence();
117  fRun->AddTask(tpcPadResponse);
118 
119  PndTpcElectronicsTask* tpcElec = new PndTpcElectronicsTask();
120  tpcElec->SetPersistence();
121  fRun->AddTask(tpcElec);
122 
123  PndDchDigiProducer* digiProducer= new PndDchDigiProducer();
124  fRun->AddTask(digiProducer);
125 
126  PndDchCylinderHitProducer* cylHitProducer= new PndDchCylinderHitProducer();
127  fRun->AddTask(cylHitProducer);
128 
130  mvddigi->SetVerbose(iVerbose);
131  fRun->AddTask(mvddigi);
132 
133  PndTofHitProducerIdeal* tofhit = new PndTofHitProducerIdeal();
134  tofhit->SetVerbose(iVerbose);
135  fRun->AddTask(tofhit);
136 
138  mdtHitProd->SetPositionSmearing(0.2); // position smearing [cm]
139  fRun->AddTask(mdtHitProd);
140 
141  PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", iVerbose);
142  fRun->AddTask(gemDigitize);
143 
144  PndGemFindHits* gemFindHits = new PndGemFindHits("GEM Hit Finder", iVerbose);
145  fRun->AddTask(gemFindHits);
146 
147  // ----- Intialise and run --------------------------------------------
148  fRun->Init();
149 
150  timer.Start();
151  fRun->Run(0,0);
152 
153  // ----- Finish -------------------------------------------------------
154  timer.Stop();
155  Double_t rtime = timer.RealTime();
156  Double_t ctime = timer.CpuTime();
157  cout << endl << endl;
158  cout << "Macro finished successfully." << endl;
159  cout << "Output file is " << outFile << endl;
160  cout << "Parameter file is " << parFile << endl;
161  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
162  cout << endl;
163  // ------------------------------------------------------------------------
164 }
Takes list of PndEmcHits and creates PndEmcWaveform.
PndGemFindHits * gemFindHits
PndEmcHitsToWaveform * emcHitsToWaveform
Definition: full_emc.C:60
TString outFile
Definition: hit_dirc.C:17
TString digiFile
Definition: bump_emc.C:20
TString emcDigiFile
Definition: bump_emc.C:45
PndSttHitProducerRealFast * sttHitProducer
PndTpcClusterizerTask * tpcClusterizer
PndFtofHitProducerIdeal * tofhit
Definition: hit_ftof.C:68
FairRunAna * fRun
Definition: hit_dirc.C:58
TString inFile
Definition: hit_dirc.C:8
void SetStorageOfData(Bool_t val)
PndMdtHitProducerIdeal * mdtHitProd
Definition: hit_muo.C:162
Double_t
TString parFile
Definition: hit_dirc.C:14
TStopwatch timer
Definition: hit_dirc.C:51
PndTpcPadResponseTask * tpcPadResponse
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
void SetVerbose(Int_t iVerbose)
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
PndGemDigitize * gemDigitize
PndEmcWaveformToDigi * emcWaveformToDigi
Definition: full_emc.C:61
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
PndTpcElectronicsTask * tpcElec
void DigiComplete(TString const &inFile, TString const &parFile, TString const &digiFile, TString const &outFile)
PndTpcDriftTask * tpcDrifter
Int_t iVerbose
Takes list of PndEmcWaveform and creates PndEmcDigi.
PndMvdDigiTask * mvddigi
Double_t rtime
Definition: hit_dirc.C:113
void SetPositionSmearing(Float_t res)
Set the smearing of the PndMdtHit position.