ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPSAtask.cxx
Go to the documentation of this file.
1 #include "AtPSAtask.h"
2 
3 #include "AtEvent.h"
4 #include "AtPSA.h"
5 #include "AtRawEvent.h"
6 
7 #include <FairLogger.h>
8 #include <FairRootManager.h> // for FairRootManager
9 
10 #include <TClonesArray.h>
11 #include <TObject.h> // for TObject
12 
13 #include <utility> // for move
14 
15 /*
16 #ifdef _OPENMP
17 #include <omp.h>
18 #endif
19 */
20 
21 constexpr auto cRED = "\033[1;31m";
22 constexpr auto cYELLOW = "\033[1;33m";
23 constexpr auto cNORMAL = "\033[0m";
24 constexpr auto cGREEN = "\033[1;32m";
25 
27 
28 AtPSAtask::AtPSAtask(AtPSA *psa) : AtPSAtask(psa->Clone()) {}
29 AtPSAtask::AtPSAtask(std::unique_ptr<AtPSA> psa)
30  : fInputBranchName("AtRawEvent"), fOutputBranchName("AtEventH"), fSimulatedPointBranchName("AtTpcPoint"),
31  fEventArray(TClonesArray("AtEvent", 1)), fPSA(std::move(psa))
32 {
33 }
34 
35 void AtPSAtask::SetPersistence(Bool_t value)
36 {
37  fIsPersistence = value;
38 }
39 
40 void AtPSAtask::SetInputBranch(TString branchName)
41 {
42  fInputBranchName = branchName;
43 }
44 
45 void AtPSAtask::SetOutputBranch(TString branchName)
46 {
47  fOutputBranchName = branchName;
48 }
49 void AtPSAtask::SetSimlulatedPointBranch(TString branchName)
50 {
51  fSimulatedPointBranchName = branchName;
52 }
53 InitStatus AtPSAtask::Init()
54 {
55  FairRootManager *ioMan = FairRootManager::Instance();
56  if (ioMan == nullptr) {
57  LOG(ERROR) << "Cannot find RootManager!";
58  return kERROR;
59  }
60 
61  fRawEventArray = dynamic_cast<TClonesArray *>(ioMan->GetObject(fInputBranchName));
62  if (fRawEventArray == nullptr) {
63  LOG(ERROR) << "Cannot find AtRawEvent array in branch " << fInputBranchName << "!";
64  return kERROR;
65  }
66 
67  fPSA->Init();
68 
69  // Retrieving simulated points, if available
70  fMCPointArray = dynamic_cast<TClonesArray *>(ioMan->GetObject(fSimulatedPointBranchName));
71  if (fMCPointArray != nullptr) {
72  LOG(INFO) << " Simulated points found (simulation analysis) in branch " << fSimulatedPointBranchName;
73  fPSA->SetSimulatedEvent(fMCPointArray);
74  } else {
75  LOG(INFO) << " Simulated points not found (experimental data analysis) looking at branch "
76  << fSimulatedPointBranchName;
77  }
78 
79  ioMan->Register(fOutputBranchName, "AtTPC", &fEventArray, fIsPersistence);
80 
81  return kSUCCESS;
82 }
83 
84 void AtPSAtask::Exec(Option_t *opt)
85 {
86  if (fRawEventArray->GetEntriesFast() == 0) {
87  LOG(debug) << "Skipping PSA because raw event array is empty";
88  return;
89  }
90 
91  auto *rawEvent = dynamic_cast<AtRawEvent *>(fRawEventArray->At(0));
92  auto *event = dynamic_cast<AtEvent *>(fEventArray.ConstructedAt(0, "C")); // Get and clear old event
93  *event = *rawEvent;
94 
95  if (!rawEvent->IsGood()) {
96  LOG(debug) << "Event " << rawEvent->GetEventID() << " is not good, skipping PSA";
97  return;
98  }
99 
100  LOG(debug) << "Staring PSA on event Number: " << rawEvent->GetEventID() << " with " << rawEvent->GetNumPads()
101  << " valid pads";
102 
103  fPSA->Analyze(rawEvent, event);
104 
105  LOG(debug) << "Finished running PSA";
106 }
cYELLOW
constexpr auto cYELLOW
Definition: AtPSAtask.cxx:22
AtRawEvent.h
AtEvent.h
AtPSAtask::AtPSAtask
AtPSAtask(std::unique_ptr< AtPSA > psaMethod)
Definition: AtPSAtask.cxx:29
AtPSAtask::Exec
virtual void Exec(Option_t *opt)
Definition: AtPSAtask.cxx:84
AtPSAtask::SetSimlulatedPointBranch
void SetSimlulatedPointBranch(TString branchName)
Definition: AtPSAtask.cxx:49
AtPSAtask.h
AtPSAtask
Definition: AtPSAtask.h:17
cNORMAL
constexpr auto cNORMAL
Definition: AtPSAtask.cxx:23
AtEvent
Definition: AtEvent.h:22
AtRawEvent
Definition: AtRawEvent.h:34
AtPSAtask::SetPersistence
void SetPersistence(Bool_t value)
Definition: AtPSAtask.cxx:35
AtPSAtask::Init
virtual InitStatus Init()
Definition: AtPSAtask.cxx:53
ClassImp
ClassImp(AtPSAtask)
AtBaseEvent::GetEventID
ULong_t GetEventID() const
Definition: AtBaseEvent.h:67
AtPSAtask::SetOutputBranch
void SetOutputBranch(TString branchName)
Definition: AtPSAtask.cxx:45
AtPSA.h
AtPSAtask::SetInputBranch
void SetInputBranch(TString branchName)
Definition: AtPSAtask.cxx:40
AtPSA
Definition: AtPSA.h:27
cRED
constexpr auto cRED
Definition: AtPSAtask.cxx:21
cGREEN
constexpr auto cGREEN
Definition: AtPSAtask.cxx:24