FairRoot/PandaRoot
tb_digi_scit.C
Go to the documentation of this file.
2 {
3  // ----------- User Settings: -------------------------------
4 
5  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
6  Int_t iVerbose = 0;
7 
8  Bool_t timebased = kTRUE;
9  //Bool_t timebased = kFALSE;
10  Double_t eventrate = 20.0; // in MHz
11 
12  // ---------- SciTHit parameters: ------------------
13  Double_t SciTDeadtime = 1000;
14  Double_t SciTdt = 0.1;
15  // ------------------------
16 
17  TString inFile = "sim_scit.root";
18  TString parFile = "sim_scit_params.root"; // at the moment you do not need it
19  TString digiFile = "all.par";
20  TString outFile = "tb_digi_scit.root";
21 
22  // ----- Timer --------------------------------------------------------
23  TStopwatch timer;
24 
25  // ----- Reconstruction run -------------------------------------------
26  FairRunAna *fRun= new FairRunAna();
27  fRun->SetInputFile(inFile);
28  fRun->SetOutputFile(outFile);
29  fRun->SetGenerateRunInfo(kFALSE);
30  fRun->SetUseFairLinks(kTRUE);
31  //fRun->SetEventMeanTime(50); //in ns
32  if (timebased) fRun->SetEventMeanTime(1/(eventrate * 10e6)*10e9); //in n
33 
34  // ----- Parameter database --------------------------------------------
35  TString allDigiFile = gSystem->Getenv("VMCWORKDIR");
36  allDigiFile += "/macro/params/";
37  allDigiFile += digiFile;
38 
39  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
40  FairParRootFileIo* parInput1 = new FairParRootFileIo();
41  parInput1->open(parFile.Data());
42 
43  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
44  parIo1->open(allDigiFile.Data(),"in");
45 
46  rtdb->setFirstInput(parInput1);
47  rtdb->setSecondInput(parIo1);
48  /*
49  // ----- STT digi producers ---------------------------------
50  PndSttHitProducerRealFast* sttHitProducer = new PndSttHitProducerRealFast();
51  fRun->AddTask(sttHitProducer);
52 
53  // ----- MDV digi producers ---------------------------------
54  PndMvdDigiTask* mvddigi = new PndMvdDigiTask();
55  mvddigi->SetVerbose(iVerbose);
56  fRun->AddTask(mvddigi);
57 
58  PndMvdClusterTask* mvdmccls = new PndMvdClusterTask();
59  mvdmccls->SetVerbose(iVerbose);
60  fRun->AddTask(mvdmccls);
61 
62  // ----- EMC hit producers ---------------------------------
63  PndEmcHitsToWaveform* emcHitsToWaveform= new PndEmcHitsToWaveform(iVerbose);
64  PndEmcWaveformToDigi* emcWaveformToDigi=new PndEmcWaveformToDigi(iVerbose);
65  emcHitsToWaveform->SetStorageOfData(kFALSE);
66  //emcWaveformToDigi->SetStorageOfData(kFALSE);
67  fRun->AddTask(emcHitsToWaveform); // full digitization
68  fRun->AddTask(emcWaveformToDigi); // full digitization
69 
70  PndEmcMakeCluster* emcMakeCluster= new PndEmcMakeCluster(iVerbose);
71  fRun->AddTask(emcMakeCluster);
72 
73  PndEmcMakeBump* emcMakeBump= new PndEmcMakeBump();
74  fRun->AddTask(emcMakeBump);
75 
76  //PndEmcHdrFiller* emcHdrFiller = new PndEmcHdrFiller();
77  //fRun->AddTask(emcHdrFiller); // ECM header
78  */
79  // ----- SciT hit producers ---------------------------
80  PndSciTDigiTask* SciTDigi = new PndSciTDigiTask();
81  SciTDigi->SetVerbose(iVerbose);
82  SciTDigi->SetDeadTime(SciTDeadtime);
83  SciTDigi->SetTimeResolution(SciTdt);
84  if(timebased) SciTDigi->RunTimeBased();
85  fRun->AddTask(SciTDigi);
86  /*
87  // ----- MDT hit producers ---------------------------------
88  PndMdtHitProducerIdeal* mdtHitProd = new PndMdtHitProducerIdeal();
89  mdtHitProd->SetPositionSmearing(.3); // position smearing [cm]
90  fRun->AddTask(mdtHitProd);
91 
92  PndMdtTrkProducer* mdtTrkProd = new PndMdtTrkProducer();
93  fRun->AddTask(mdtTrkProd);
94 
95  // ----- DRC hit producers ---------------------------------
96  PndDrcHitProducerReal* drchit = new PndDrcHitProducerReal();
97  drchit->SetVerbose(iVerbose);
98  fRun->AddTask(drchit);
99 
100  // ----- GEM hit producers ---------------------------------
101  Int_t verboseLevel = 0;
102  PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", verboseLevel);
103  fRun->AddTask(gemDigitize);
104 
105  PndGemFindHits* gemFindHits = new PndGemFindHits("GEM Hit Finder", verboseLevel);
106  fRun->AddTask(gemFindHits);
107 
108  // ----- FTS hit producers ---------------------------------
109  PndFtsHitProducerRealFast* ftsHitProducer = new PndFtsHitProducerRealFast();
110  fRun->AddTask(ftsHitProducer);
111 
112  // ----- Ftof hit producers ---------------------------
113  PndFtofHitProducerIdeal* ftofhit = new PndFtofHitProducerIdeal();
114  ftofhit->SetVerbose(iVerbose);
115  fRun->AddTask(ftofhit);
116  */
117  // ----- Intialise and run --------------------------------------------
118  fRun->Init();
119 
120  timer.Start();
121  fRun->Run();
122 
123  // ----- Finish -------------------------------------------------------
124  timer.Stop();
125  Double_t rtime = timer.RealTime();
126  Double_t ctime = timer.CpuTime();
127  cout << endl << endl;
128  cout << "Macro finished successfully." << endl;
129  cout << "Output file is " << outFile << endl;
130  cout << "Parameter file is " << parFile << endl;
131  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
132  cout << endl;
133  // ------------------------------------------------------------------------
134  cout << " Test passed" << endl;
135  cout << " All ok " << endl;
136 
137  return 0;
138 }
void SetDeadTime(Double_t deadtime)
int tb_digi_scit()
Definition: tb_digi_scit.C:1
TString outFile
Definition: hit_dirc.C:17
TString digiFile
Definition: bump_emc.C:20
TString allDigiFile
Definition: hit_muo.C:36
FairRunAna * fRun
Definition: hit_dirc.C:58
TString inFile
Definition: hit_dirc.C:8
Double_t
void SetTimeResolution(Double_t dt)
TString parFile
Definition: hit_dirc.C:14
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
Int_t iVerbose
Double_t rtime
Definition: hit_dirc.C:113