FairRoot/PandaRoot
timeordered/run_digi.C
Go to the documentation of this file.
1 int run_digi()
2 {
3  // Macro created 20/09/2006 by S.Spataro
4  // It loads a simulation file and digitize hits
5 
6  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
7  Int_t iVerbose = 0; // just forget about it, for the moment
8  Bool_t timeBased = false;
9  // Input file (MC events)
10  TString inFile = "dpm_simulation.root";
11  Int_t nEvents = 0;
12 
13  PndFileNameCreator creator(inFile.Data());
14  TString parFile = creator.GetParFileName().c_str();
16  if (timeBased)
17  outFile= creator.GetDigiFileName("timebased").c_str();
18  else
19  outFile= creator.GetDigiFileName().c_str();
20  std::cout << "DigiFileName: " << outFile.Data() << std::endl;
21  // Digitisation file (ascii)
22  TString digiFile = "all.par";
23 
24  FairLogger *logger = FairLogger::GetLogger();
25  logger->SetLogFileName("MyLog.log");
26  logger->SetLogToScreen(kTRUE);
27 // logger->SetLogToFile(kTRUE);
28  logger->SetLogVerbosityLevel("HIGH");
29 // logger->SetLogFileLevel("DEBUG4");
30  logger->SetLogScreenLevel("DEBUG");
31  // ----- Timer --------------------------------------------------------
32  TStopwatch timer;
33 
34  // ----- Reconstruction run -------------------------------------------
35  FairRunAna *fRun= new FairRunAna();
36  FairFileSource *fFileSource = new FairFileSource(inFile);
37 // fFileSource->ReadEventTimeFromFile("EventTimes.dat");
38  fFileSource->SetEventMeanTime(50);
39  fFileSource->SetBeamTime(1600, 400);
40  fRun->SetSource(fFileSource);
41 
42  fRun->SetOutputFile(outFile);
43  fRun->SetGenerateRunInfo(kFALSE);
44  fRun->SetUseFairLinks(kTRUE);
45  // ----- Parameter database --------------------------------------------
46  TString allDigiFile = gSystem->Getenv("VMCWORKDIR");
47  allDigiFile += "/macro/params/";
48  allDigiFile += digiFile;
49 
50  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
51  FairParRootFileIo* parInput1 = new FairParRootFileIo();
52  parInput1->open(parFile.Data());
53 
54  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
55  parIo1->open(allDigiFile.Data(),"in");
56 
57  rtdb->setFirstInput(parInput1);
58  rtdb->setSecondInput(parIo1);
59 
60  // ----- STT digi producers ---------------------------------
62  if (timeBased)
63  sttHitProducer->RunTimeBased();
64  fRun->AddTask(sttHitProducer);
65 
66  if (timeBased) {
67  PndSttHitSorterTask* sttSorter = new PndSttHitSorterTask(5000, 50, "STTHit", "STTSortedHits", "PndSTT");
68  fRun->AddTask(sttSorter);
69  }
70 
71  // ----- MVD digi producers ---------------------------------
73  if (timeBased)
74  mvddigi->RunTimeBased();
75  mvddigi->SetVerbose(iVerbose);
76  fRun->AddTask(mvddigi);
77 
78  // ----- EMC hit producers ---------------------------------
79  //wf simulation
80  if (timeBased){
81  Bool_t storeWfDataClass = kTRUE;
82  Bool_t storeWf = kTRUE;
84  wfTask->StoreDataClass(storeWfDataClass);
85  wfTask->SetStorageOfData(storeWf);
86  if (timeBased)
87  wfTask->RunTimebased();
88 
89  Bool_t storeUnsortedDigis = kTRUE;
90  PndEmcFWEndcapDigi* digiTask = new PndEmcFWEndcapDigi(iVerbose, storeUnsortedDigis);
91 
92  PndEmcDigiSorterTask* sorterTask = new PndEmcDigiSorterTask(10000, 1, "EmcDigi", "EmcDigiSorted", "Emc");
93  sorterTask->SetVerbose(iVerbose);
94 
95 
96  fRun->AddTask(wfTask);
97  fRun->AddTask(digiTask);
98  fRun->AddTask(sorterTask);
99  }
100  else {
103 
104  fRun->AddTask(emcwf);
105  fRun->AddTask(emcdigi);
106 
107  }
108 
109  //PndEmcHdrFiller* emcHdrFiller = new PndEmcHdrFiller();
110  //fRun->AddTask(emcHdrFiller); // ECM header
111 
112  // ----- SciT hit producers ---------------------------
113  Double_t SciTDeadtime = 1000;
114  Double_t SciTdt = 0.1;
115 
116  PndSciTDigiTask* SciTDigi = new PndSciTDigiTask();
117  SciTDigi->SetVerbose(iVerbose);
118  SciTDigi->SetDeadTime(SciTDeadtime);
119  SciTDigi->SetTimeResolution(SciTdt);
120  if (timeBased)
121  SciTDigi->RunTimeBased();
122  fRun->AddTask(SciTDigi);
123 
124  // ----- MDT hit producers ---------------------------------
126  mdtHitProd->SetPositionSmearing(.3); // position smearing [cm]
127  fRun->AddTask(mdtHitProd);
128 
129  // ----- DRC hit producers ---------------------------------
131  drchit->SetVerbose(iVerbose);
132  fRun->AddTask(drchit);
133 
134  // ----- GEM hit producers ---------------------------------
135  Int_t verboseLevel = 0;
136  PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", verboseLevel);
137  fRun->AddTask(gemDigitize);
138 
139 
140  // ----- FTS hit producers ---------------------------------
142  if (timeBased)
143  ftsHitProducer->RunTimeBased();
144  fRun->AddTask(ftsHitProducer);
145 
146  if (timeBased){
147  PndFtsHitSorterTask* ftsSorter = new PndFtsHitSorterTask(5000, 50, "FTSHit", "FTSSortedHits", "PndFTS");
148  fRun->AddTask(ftsSorter);
149  }
150 
151  // ----- Ftof hit producers ---------------------------
153  ftofhit->SetVerbose(iVerbose);
154  fRun->AddTask(ftofhit);
155 
156  // ----- Intialise and run --------------------------------------------
157  fRun->Init();
158 
159  timer.Start();
160  fRun->Run(0, nEvents);
161 
162  // ----- Finish -------------------------------------------------------
163  timer.Stop();
164  Double_t rtime = timer.RealTime();
165  Double_t ctime = timer.CpuTime();
166  cout << endl << endl;
167  cout << "Macro finished successfully." << endl;
168  cout << "Output file is " << outFile << endl;
169  cout << "Parameter file is " << parFile << endl;
170  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
171  cout << endl;
172  // ------------------------------------------------------------------------
173  cout << " Test passed" << endl;
174  cout << " All ok " << endl;
175 
176  return 0;
177 }
Takes list of PndEmcHits and creates PndEmcWaveform.
void SetDeadTime(Double_t deadtime)
int verboseLevel
Definition: Lars/runMvdSim.C:7
TString outFile
Definition: hit_dirc.C:17
void StoreDataClass(Bool_t storeData=kTRUE)
Method to specify whether waveforms are stored or not.
Taks to create waveforms from hits.
TString digiFile
Definition: bump_emc.C:20
PndSttHitProducerRealFast * sttHitProducer
TString allDigiFile
Definition: hit_muo.C:36
FairRunAna * fRun
Definition: hit_dirc.C:58
Task to create digis from waveforms.
TString inFile
Definition: hit_dirc.C:8
PndMdtHitProducerIdeal * mdtHitProd
Definition: hit_muo.C:162
PndDrcHitProducerReal * drchit
Definition: hit_dirc_draw.C:73
A simple class which adds the corresponding file extensions to a given base class.
Double_t
void SetTimeResolution(Double_t dt)
TString parFile
Definition: hit_dirc.C:14
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
void SetVerbose(Int_t iVerbose)
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
PndFtofHitProducerIdeal * ftofhit
Double_t ctime
Definition: hit_dirc.C:114
PndGemDigitize * gemDigitize
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
int run_digi()
PndMvdCreateDefaultApvMap * creator
void SetStorageOfData(Bool_t storeWaves=kTRUE)
Int_t iVerbose
Takes list of PndEmcWaveform and creates PndEmcDigi.
PndMvdDigiTask * mvddigi
PndFtsHitProducerRealFast * ftsHitProducer
Double_t rtime
Definition: hit_dirc.C:113
void SetPositionSmearing(Float_t res)
Set the smearing of the PndMdtHit position.