ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTriggerTask.cxx
Go to the documentation of this file.
1 #include "AtTriggerTask.h"
2 
3 #include "AtTrigger.h"
4 
5 #include <FairLogger.h>
6 #include <FairParSet.h>
7 #include <FairTask.h>
8 
9 #include <TClonesArray.h>
10 #include <TObject.h>
11 
12 #include <iostream>
13 #include <memory>
14 // Fair class header
15 #include "AtEvent.h"
16 #include "AtRawEvent.h"
17 #include "AtTriggerPar.h"
18 
19 #include <FairRootManager.h>
20 #include <FairRunAna.h>
21 #include <FairRuntimeDb.h>
22 
24  : FairTask("AtTriggerTask"), fIsPersistent(kTRUE), fAtRawEventArray_acc("AtRawEvent", 1),
25  fAtEventArray_acc("AtEvent", 1)
26 {
27 }
28 
30 {
31  LOG(debug) << "Destructor of AtTriggerTask";
32 }
33 
35 {
36  LOG(debug) << "SetParContainers of AtTriggerTask";
37 
38  FairRunAna *ana = FairRunAna::Instance();
39  FairRuntimeDb *rtdb = ana->GetRuntimeDb();
40  fPar = dynamic_cast<AtTriggerPar *>(rtdb->getContainer("AtTriggerPar"));
41 }
42 
43 InitStatus AtTriggerTask::Init()
44 {
45  LOG(debug) << "Initilization of AtTriggerTask";
46 
47  FairRootManager *ioman = FairRootManager::Instance();
48 
49  //********Get AtEventH and AtRawEvent*************
50  fAtEventArray = dynamic_cast<TClonesArray *>(ioman->GetObject("AtEventH"));
51  if (fAtEventArray == nullptr) {
52  LOG(error) << "Cannot find fAtEventArray array!";
53  return kERROR;
54  }
55 
56  fAtRawEventArray = dynamic_cast<TClonesArray *>(ioman->GetObject("AtRawEvent"));
57  if (fAtRawEventArray == nullptr) {
58  LOG(error) << "Cannot find fAtRawEventArray array!";
59  return kERROR;
60  }
61 
62  //**********SetOutputBranches********************************
63  ioman->Register("Accepted_AtRawEvent", "cbmsim", &fAtRawEventArray_acc, fIsPersistent);
64  ioman->Register("Accepted_AtEventH", "cbmsim", &fAtEventArray_acc, fIsPersistent);
65 
66  //**********Get and set parameters*************************
67  Double_t read, write, MSB, LSB, width, fraction, threshold, window, height;
68  fTrigger = std::make_unique<AtTrigger>();
69 
70  write = fPar->GetWrite_Clock();
71  read = fPar->GetRead_Clock();
72  MSB = fPar->GetPad_thres_MSB();
73  LSB = fPar->GetPad_thres_LSB();
74  width = fPar->GetTrigger_signal_width();
75  fraction = fPar->GetTrigger_discriminator_fraction();
76  threshold = fPar->GetMultiplicity_threshold();
77  window = fPar->GetMultiplicity_window();
78  height = fPar->GetTrigger_height();
79 
80  fTrigger->SetTriggerParameters(write, read, MSB, LSB, width, fraction, threshold, window, height);
81  fTrigger->SetAtMap(fMapPath);
82  return kSUCCESS;
83 }
84 
85 void AtTriggerTask::SetAtMap(TString mapPath)
86 {
87  fMapPath = mapPath;
88 }
89 
90 void AtTriggerTask::Exec(Option_t *option)
91 {
92  LOG(debug) << "Exec of AtTriggerTask";
93 
94  //***************Reset everything and load next event****************
95  // fAtEventArray_acc ->Delete();
96  // fAtRawEventArray_acc ->Delete();
97 
98  fEvent = nullptr;
99  fRawEvent = nullptr;
100 
101  fEvent = dynamic_cast<AtEvent *>(fAtEventArray->At(0));
102  fRawEvent = dynamic_cast<AtRawEvent *>(fAtRawEventArray->At(0));
103 
104  //*****************Check if event will be triggered******************
105  fIsTrigger = fTrigger->ImplementTrigger(fRawEvent, fEvent);
106 
107  //****************Puts event into new branches***********************
108  if (fIsTrigger == kTRUE) {
109 
110  std::cerr << "Event triggered by DAQ" << std::endl;
111 
112  new (fAtEventArray_acc[0]) AtEvent(*fEvent);
113  new (fAtRawEventArray_acc[0]) AtRawEvent(*fRawEvent);
114  }
115 }
116 
AtTriggerPar::GetMultiplicity_window
Double_t GetMultiplicity_window()
Definition: AtTriggerPar.cxx:54
AtRawEvent.h
AtTriggerPar::GetPad_thres_MSB
Double_t GetPad_thres_MSB()
Definition: AtTriggerPar.cxx:34
AtEvent.h
AtTriggerPar::GetRead_Clock
Double_t GetRead_Clock()
Definition: AtTriggerPar.cxx:26
AtTriggerPar::GetTrigger_signal_width
Double_t GetTrigger_signal_width()
Definition: AtTriggerPar.cxx:42
ClassImp
ClassImp(AtTriggerTask)
AtTriggerPar::GetWrite_Clock
Double_t GetWrite_Clock()
Definition: AtTriggerPar.cxx:22
AtTriggerPar.h
AtEvent
Definition: AtEvent.h:22
AtTriggerTask::Exec
virtual void Exec(Option_t *opt)
Executed for each event.
Definition: AtTriggerTask.cxx:90
AtRawEvent
Definition: AtRawEvent.h:34
AtTriggerTask::SetAtMap
void SetAtMap(TString mapPath)
Definition: AtTriggerTask.cxx:85
AtTriggerTask.h
AtTriggerPar
Definition: AtTriggerPar.h:19
AtTriggerTask::SetParContainers
virtual void SetParContainers()
Load the parameter container from the runtime database.
Definition: AtTriggerTask.cxx:34
AtTriggerTask::~AtTriggerTask
~AtTriggerTask()
Definition: AtTriggerTask.cxx:29
AtTriggerTask
Definition: AtTriggerTask.h:27
AtTriggerPar::GetTrigger_height
Double_t GetTrigger_height()
Definition: AtTriggerPar.cxx:58
AtTriggerPar::GetPad_thres_LSB
Double_t GetPad_thres_LSB()
Definition: AtTriggerPar.cxx:38
AtTriggerPar::GetTrigger_discriminator_fraction
Double_t GetTrigger_discriminator_fraction()
Definition: AtTriggerPar.cxx:46
AtTrigger.h
AtTriggerTask::Init
virtual InitStatus Init()
Initiliazation of task at the beginning of a run.
Definition: AtTriggerTask.cxx:43
AtTriggerPar::GetMultiplicity_threshold
Double_t GetMultiplicity_threshold()
Definition: AtTriggerPar.cxx:50
AtTriggerTask::AtTriggerTask
AtTriggerTask()
Definition: AtTriggerTask.cxx:23