FairRoot/PandaRoot
detectors/drc/digi.C
Go to the documentation of this file.
1 int digi(Int_t nEvents = 0, TString inFile = "sim.root", TString parFile="par.root", TString outFile = "digi.root", Int_t timeBased=0, Double_t eventRate=50, Double_t deadTime=40){
2  Int_t verbose = 0;
3 
4  // ----- Timer --------------------------------------------------------
5  TStopwatch timer;
6  timer.Start();
7 
8  // ----- Reconstruction run -------------------------------------------
9  FairRunAna *fRun= new FairRunAna();
10  fRun->SetGenerateRunInfo(kFALSE);
11  fRun->SetInputFile(inFile);
12  fRun->SetOutputFile(outFile);
13  fRun->SetUseFairLinks(kTRUE);
14  if(timeBased) fRun->SetEventMeanTime(eventRate);
15 
16  // ----- Parameter database --------------------------------------------
17  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
18  FairParRootFileIo* parInput = new FairParRootFileIo();
19  parInput->open(parFile.Data());
20  rtdb->setFirstInput(parInput);
21 
22  if(parFile=="batch"){
23  TList* parlist = new TList();
24  for(Int_t i=0; i<4; i++) parlist->Add(new TObjString(Form("par_b%d.root",i)));
25  parInput->open(parlist);
26  }else{
27  parInput->open(parFile.Data());
28  }
29  rtdb->setFirstInput(parInput);
30 
31  // ----- DRC Digitization stage ----------------------------------------
32  PndDrcDigiTask* drcdigi = new PndDrcDigiTask(verbose);
33  drcdigi->SetChargeSharing(kFALSE);
34  drcdigi->SetDeadTime(deadTime); //5 ns
35  drcdigi->SetTimeResolution(0.1); //0.4 ns
36  if(timeBased) drcdigi->RunTimeBased();
37  fRun->AddTask(drcdigi);
38 
39  // PndDrcDigiSorterTask* digiSorter = new PndDrcDigiSorterTask(1000, 0.4, "DrcDigi", "DrcSortedDigi", "PndDrc");
40  // digiSorter->SetVerbose(3);
41  // fRun->AddTask(digiSorter);
42 
43  // // ----- DRC hit producer ------------------------------------------
44  // PndDrcHitFinder* hitfind = new PndDrcHitFinder(0);
45  // fRun->AddTask(hitfind);
46 
47  // ----- Initialize and run -------------------------------------------
48  fRun->Init();
49  fRun->Run(0,nEvents);
50 
51  // ----- Finish -------------------------------------------------------
52  timer.Stop();
53  Double_t rtime = timer.RealTime();
54  Double_t ctime = timer.CpuTime();
55  cout << endl << endl;
56  cout << "Macro finished succesfully." << endl;
57  cout << "Output file is " << outFile << endl;
58  cout << "Parameter file is " << parFile << endl;
59  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
60  cout << endl;
61  return 0;
62 }
void SetChargeSharing(Bool_t ct=0)
Int_t i
Definition: run_full.C:25
TString outFile
Definition: hit_dirc.C:17
#define verbose
void SetDeadTime(Double_t var)
TString inFile
Definition: hit_dirc.C:8
FairRunAna * fRun
Definition: hit_dirc.C:58
Double_t
TString parFile
Definition: hit_dirc.C:14
PndDrcDigiTask * drcdigi
Definition: hit_dirc.C:91
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
Double_t ctime
Definition: hit_dirc.C:114
void SetTimeResolution(Double_t var)
FairParAsciiFileIo * parInput
Double_t rtime
Definition: hit_dirc.C:113
int digi(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString outFile="digi.root", Int_t timeBased=0, Double_t eventRate=50, Double_t deadTime=40)