FairRoot/PandaRoot
Functions
DigiComplete.cxx File Reference
#include "DigiComplete.h"
#include <PndEmcHitsToWaveform.h>
#include <PndEmcWaveformToDigi.h>
#include <PndDchDigiProducer.h>
#include <PndDchCylinderHitProducer.h>
#include <PndMvdDigiTask.h>
#include <PndTofHitProducerIdeal.h>
#include <PndMdtHitProducerIdeal.h>
#include <PndGemDigitize.h>
#include <PndGemFindHits.h>
#include <PndSttHitProducerRealFast.h>
#include <PndTpcClusterizerTask.h>
#include <PndTpcDriftTask.h>
#include <PndTpcGemTask.h>
#include <PndTpcPadResponseTask.h>
#include <PndTpcElectronicsTask.h>
#include <FairBoxGenerator.h>
#include <FairEvtGenGenerator.h>
#include <FairModule.h>
#include <FairParAsciiFileIo.h>
#include <FairParRootFileIo.h>
#include <FairPrimaryGenerator.h>
#include <FairRunAna.h>
#include <FairRunSim.h>
#include <FairRuntimeDb.h>
#include <TROOT.h>
#include <TStopwatch.h>
#include <TSystem.h>
#include <iostream>

Go to the source code of this file.

Functions

void DigiComplete (TString const &inFile, TString const &parFile, TString const &digiFile, TString const &outFile)
 

Function Documentation

void DigiComplete ( TString const &  inFile,
TString const &  parFile,
TString const &  digiFile,
TString const &  outFile 
)

use Alice Style MC make one hit per collision with atom use other straggling WARNING:

  1. geant3 has to be used!
  2. LOSS = 5 has to be set!
  3. DCUTE und DCUTM should be set to 10 keV.
  4. For Digitaization: PndTpcClusterizerTask tpcClusterizer->SetMereChargeConversion() has to be set!
  5. if you do not use this option make sure 2., 4. are not set! :-(
  6. SetMaxNStep should be set to a high value

Definition at line 39 of file DigiComplete.cxx.

References ctime, digiFile, Double_t, emcDigiFile, emcHitsToWaveform, emcWaveformToDigi, fRun, gDebug, gemDigitize, gemFindHits, iVerbose, mdtHitProd, mvddigi, parInput1, parIo1, rtdb, rtime, PndMdtHitProducerIdeal::SetPositionSmearing(), PndEmcHitsToWaveform::SetStorageOfData(), PndBlackBoxTask::SetVerbose(), sttHitProducer, timer, tofhit, tpcClusterizer, tpcDrifter, tpcElec, tpcPadResponse, and TString.

Referenced by main().

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
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.