FairRoot/PandaRoot
Functions
emc_reco.C File Reference

Go to the source code of this file.

Functions

void deactivatePhiSplitter (FairTask *bumpSplitter)
 
int emc_reco (const char *digiFile, const char *simFile, const char *outFile, Int_t events=0, const char *parFile="simparams.root")
 

Function Documentation

void deactivatePhiSplitter ( FairTask *  bumpSplitter)

Definition at line 4 of file emc_reco.C.

Referenced by emc_reco(), run_reco(), and run_reco_timebased().

4  {
5  FairTask* phi_splitter= dynamic_cast<FairTask*>(bumpSplitter->GetListOfTasks()->FindObject("PndEmcPhiBumpSplitter"));
6  if(phi_splitter) {
7  cout << "Deactivating PhiBumpSplitter!" << endl;
8  phi_splitter->SetActive(kFALSE);
9  } else {
10  cout << "No PndEmcPhiBumpSplitter available" << endl;
11  }
12 }
int emc_reco ( const char *  digiFile,
const char *  simFile,
const char *  outFile,
Int_t  events = 0,
const char *  parFile = "simparams.root" 
)

Definition at line 14 of file emc_reco.C.

References Bool_t, ctime, deactivatePhiSplitter(), Double_t, fRun, iVerbose, nEvents, parFile, parInput1, parIo1, rtdb, rtime, PndEmcMakeCluster::StoreClusterBaseDigis(), timer, TString, and verbose.

14  {
15  // Loads a filewith hits and makes digitization for EMC
16 
17  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
18  Int_t iVerbose = 1; // just forget about it, for the moment
19 
20  // Input file (MC events)
21  //
22  // Number of events to process
23  Int_t nEvents=events; // if 0 all the events will be processed
24  std::cout << "will process " << nEvents << " events" << std::endl;
25 
26  // Digitisation file (ascii)
27  TString parFile_Ascii = "emc.par";
28 
29  // Loading libraries
30  // If the macro gives error messages in loading libraries, please check the path of the libs and put it by hands
31 
32 // gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
33  // gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
34  //rootlogon();
35  //basiclibs();
36 
37 
38  // ----- Timer --------------------------------------------------------
39  TStopwatch timer;
40  timer.Start();
41  // ------------------------------------------------------
42 
43  // ----- Reconstruction run ------------------------------
44  FairRunAna *fRun= new FairRunAna();
45  fRun->SetInputFile(digiFile);
46  fRun->AddFriend(simFile);
47  fRun->SetOutputFile(outFile);
48 
49  fRun->SetUseFairLinks(kTRUE);
50 
51  if(TString(digiFile).Contains(TPRegexp("(?<!tim)ebased")) || TString(digiFile).Contains("ideal")) {
52  cout << "WILL RUN EVENTBASED" << endl;
53  } else {
54  fRun->RunWithTimeStamps();
55  cout << "WILL RUN TIMEBASED" << endl;
56  }
57 
58  // ----- Parameter database --------------------------
59  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
60 
61  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
62  parIo1->open(parFile_Ascii.Data(),"in");
63  rtdb->setFirstInput(parIo1);
64 
65  FairParRootFileIo* parInput1 = new FairParRootFileIo();
66  parInput1->open(parFile);
67  rtdb->setSecondInput(parInput1);
68 
69  // ----------------------------------------------------
70 
71  Int_t verbose = 0;
72  Bool_t storeclusters = kTRUE;
73  Bool_t storebumps = kTRUE;
74 
75  PndEmcMakeCluster* clusterTask = new PndEmcMakeCluster(verbose, storeclusters);
76  clusterTask->StoreClusterBaseDigis(kTRUE);
77  fRun->AddTask(clusterTask);
78 
79  //TODO: tasks needed due to limitiations in EmcCluster data class
80  //Removes multiple entries of same crystal in one cluster --> PndEmcCluster cannot handle this
82  clusterTask->Add(corrTask);
83  corrTask->SetActive(kTRUE);
84 
85  PndEmcMakeBump* bumperTask = new PndEmcMakeBump(verbose, storebumps);
86  fRun->AddTask(bumperTask);
87 
88  // ----- Intialise and run -----------------------
89 
90  gRandom->SetSeed();
91  cout << "fRun->Init()" << endl;
92  fRun->Init();
93 
94  deactivatePhiSplitter(bumperTask);
95 
96  cout << "fRun->Run()" << endl;
97  fRun->Run(0,nEvents);
98 
99  // ----------------------------------------------------
100 
101 
102  // ----- Finish -------------------------------------------------------
103  timer.Stop();
104  Double_t rtime = timer.RealTime();
105  Double_t ctime = timer.CpuTime();
106  cout << endl << endl;
107  cout << "Macro finished successfully." << endl;
108  cout << "Output file is " << outFile << endl;
109  cout << "Parameter file is " << parFile << endl;
110  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
111  cout << endl;
112  // ------------------------------------------------------------------------
113 
114  return 0;
115 }
TString outFile
Definition: hit_dirc.C:17
#define verbose
TString digiFile
Definition: bump_emc.C:20
FairRunAna * fRun
Definition: hit_dirc.C:58
void deactivatePhiSplitter(FairTask *bumpSplitter)
Definition: emc_reco.C:4
Task to remove duplicate crystals.
TString simFile
Definition: bump_emc.C:11
Double_t
TString parFile
Definition: hit_dirc.C:14
void StoreClusterBaseDigis(Bool_t val=kTRUE)
Method to specify whether underlying digis are stored or not.
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.
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
Task to cluster PndEmcDigis.
Int_t iVerbose
Double_t rtime
Definition: hit_dirc.C:113