FairRoot/PandaRoot
Functions
run_digi_complete.C File Reference

Go to the source code of this file.

Functions

int run_digi_complete (TString FileName="test")
 

Function Documentation

int run_digi_complete ( TString  FileName = "test")

Definition at line 1 of file run_digi_complete.C.

References allDigiFile, creator, ctime, Double_t, drchit, emcHdrFiller, emcHitsToWaveform, emcMakeBump, emcMakeCluster, emcWaveformToDigi, FileName, fRun, ftofhit, ftsHitProducer, gemDigitize, gemFindHits, inFile, PndFtofHitProducerIdeal::Init(), iVerbose, mdtHitProd, mdtTrkProd, mvddigi, mvdmccls, nEvents, outFile, parFile, parInput1, parIo1, rootlogon(), rtdb, rtime, PndMdtHitProducerIdeal::SetPositionSmearing(), PndEmcHitsToWaveform::SetStorageOfData(), PndBlackBoxTask::SetVerbose(), sttHitProducer, sysFile, timer, tofhit, TString, and verboseLevel.

1  {
2  // ========================================================================
3  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
4 
5  // ---- Load libraries -------------------------------------------------
6  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
7  rootlogon();
8  TString sysFile = gSystem->Getenv("VMCWORKDIR");
9  // ------------------------------------------------------------------------
10 
11  Int_t iVerbose = 0;
12 
14 
15  // Input file (MC events)
16  TString inFile = creator.GetSimFileName();
17 
18  // Parameter file
19  TString parFile = creator.GetParFileName() ;
20 
21  // Output file
22  TString outFile = creator.GetDigiFileName();
23 
24  // Number of events to process
25  Int_t nEvents = 0;
26 
27  // --- Now choose concrete engines for the different tasks -------------
28  // ------------------------------------------------------------------------
29 
30  // In general, the following parts need not be touched
31  // ========================================================================
32 
33  // ----- Timer --------------------------------------------------------
34  TStopwatch timer;
35  timer.Start();
36  // ------------------------------------------------------------------------
37 
38  // ----- Digitization run -------------------------------------------
39  FairRunAna *fRun= new FairRunAna();
40  fRun->SetInputFile(inFile);
41  fRun->SetOutputFile(outFile);
42 
43  // ------------------------------------------------------------------------
44 
45  // ----- Parameter database --------------------------------------------
46  TString allDigiFile = sysFile+"/macro/params/all.par";
47 
48  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
49  FairParRootFileIo* parInput1 = new FairParRootFileIo();
50  parInput1->open(parFile.Data());
51 
52  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
53  parIo1->open(allDigiFile.Data(),"in");
54 
55  rtdb->setFirstInput(parInput1);
56  rtdb->setSecondInput(parIo1);
57  // ------------------------------------------------------------------------
58 
59  // ----- STT digi producers ---------------------------------
61  fRun->AddTask(sttHitProducer);
62 
63  // ----- MVD digi producers ---------------------------------
65  mvddigi->SetVerbose(iVerbose);
66  fRun->AddTask(mvddigi);
67 
69  mvdmccls->SetVerbose(iVerbose);
70  fRun->AddTask(mvdmccls);
71 
72  // ----- EMC hit producers ---------------------------------
75  emcHitsToWaveform->SetStorageOfData(kFALSE);
76  //emcWaveformToDigi->SetStorageOfData(kFALSE);
77  fRun->AddTask(emcHitsToWaveform); // full digitization
78  fRun->AddTask(emcWaveformToDigi); // full digitization
79 
81  fRun->AddTask(emcMakeCluster);
82 
84  fRun->AddTask(emcMakeBump);
85 
87  fRun->AddTask(emcHdrFiller); // ECM header
88 
89  // ----- SciT hit producer ----------------------------------
90 
92  tofhit->SetVerbose(iVerbose);
93  fRun->AddTask(tofhit);
94 
95  // ----- MDT hit producers ---------------------------------
97  mdtHitProd->SetPositionSmearing(.3); // position smearing [cm]
98  fRun->AddTask(mdtHitProd);
99 
101  fRun->AddTask(mdtTrkProd);
102 
103  // ----- DRC hit producers ---------------------------------
105  drchit->SetVerbose(iVerbose);
106  fRun->AddTask(drchit);
107 
108  // ----- FTS hit producers ---------------------------------
110  fRun->AddTask(ftsHitProducer);
111 
112  // ----- GEM hit producers ---------------------------------
113 
114  // Ideal case
115 
116  Int_t verboseLevel = 0;
117  PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", verboseLevel);
118  fRun->AddTask(gemDigitize);
119 
120  PndGemFindHits* gemFindHits = new PndGemFindHits("GEM Hit Finder", verboseLevel);
121  fRun->AddTask(gemFindHits);
122 
123  // Realistic case
124 
125 // Int_t verboseLevel = 0;
126 // PndGemDigitize* gemDigitize = new PndGemDigitize("GEM Digitizer", verboseLevel);
127 // gemDigitize->SetRealisticResponse(kTRUE);
128 // fRun->AddTask(gemDigitize);
129 //
130 // PndGemFindClusters* gemFindClusters = new PndGemFindClusters("GEM Find Clusters");
131 // fRun->AddTask(gemFindClusters);
132 //
133 // PndGemFindHits* gemFindHits = new PndGemFindHits("GEM Hit Finder", verboseLevel);
134 // gemFindHits->SetUseClusters();
135 // fRun->AddTask(gemFindHits);
136 
137  // ----- Ftof hit producers ---------------------------
139  ftofhit->SetVerbose(iVerbose);
140  fRun->AddTask(ftofhit);
141 
142  // ----- Intialise and run --------------------------------------------
143  fRun->Init();
144  fRun->Run();
145 
146  rtdb->saveOutput();
147  rtdb->print();
148 
149  // ------------------------------------------------------------------------
150 
151  // ----- Finish -------------------------------------------------------
152 
153  timer.Stop();
154  Double_t rtime = timer.RealTime();
155  Double_t ctime = timer.CpuTime();
156  cout << endl << endl;
157  cout << "Macro finished succesfully." << endl;
158  cout << "Output file is " << outFile << endl;
159  cout << "Parameter file is " << parFile << endl;
160  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
161  cout << endl;
162  // ------------------------------------------------------------------------
163 
164  cout << " Test passed" << endl;
165  cout << " All ok " << endl;
166 
167  return 0;
168 
169 }
Takes list of PndEmcHits and creates PndEmcWaveform.
PndGemFindHits * gemFindHits
int verboseLevel
Definition: Lars/runMvdSim.C:7
PndEmcHitsToWaveform * emcHitsToWaveform
Definition: full_emc.C:60
TString outFile
Definition: hit_dirc.C:17
PndEmcMakeBump * emcMakeBump
Definition: bump_emc.C:63
TString FileName
PndMvdStripClusterTask * mvdmccls
Definition: runclust.C:45
PndSttHitProducerRealFast * sttHitProducer
TString allDigiFile
Definition: hit_muo.C:36
PndEmcHdrFiller * emcHdrFiller
Definition: full_emc.C:68
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
PndDrcHitProducerReal * drchit
Definition: hit_dirc_draw.C:73
TString sysFile
A simple class which adds the corresponding file extensions to a given base class.
Double_t
TString parFile
Definition: hit_dirc.C:14
PndEmcMakeCluster * emcMakeCluster
Definition: full_emc.C:65
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
Takes clusters and slits them up into bumps.
void SetVerbose(Int_t iVerbose)
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
PndFtofHitProducerIdeal * ftofhit
Double_t ctime
Definition: hit_dirc.C:114
PndGemDigitize * gemDigitize
PndEmcWaveformToDigi * emcWaveformToDigi
Definition: full_emc.C:61
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
Task to cluster PndEmcDigis.
PndMvdCreateDefaultApvMap * creator
Int_t iVerbose
PndMdtTrkProducer * mdtTrkProd
Definition: hit_muo.C:166
Takes list of PndEmcWaveform and creates PndEmcDigi.
PndMvdDigiTask * mvddigi
PndFtsHitProducerRealFast * ftsHitProducer
Double_t rtime
Definition: hit_dirc.C:113
Task to create Emc header.
void SetPositionSmearing(Float_t res)
Set the smearing of the PndMdtHit position.