]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ZDC/AliZDCTriggerProcessor.cxx
covering our asses by including the MIT license
[u/mrichter/AliRoot.git] / ZDC / AliZDCTriggerProcessor.cxx
CommitLineData
3288dac3 1#include "AliZDCTriggerProcessor.h"
2#include "AliCDBManager.h"
3#include "AliCDBEntry.h"
4#include "AliCDBMetaData.h"
5#include "AliLog.h"
6#include "AliZDCTriggerParameters.h"
7
8/////////////////////////////////////////////////////////////////////
9// //
10// Class implementing ZDC trigger processor. //
11// //
12/////////////////////////////////////////////////////////////////////
13
14ClassImp(AliZDCTriggerProcessor)
15
16//______________________________________________________________________________________________
17AliZDCTriggerProcessor::AliZDCTriggerProcessor() :
18 fSignal(0x0),
19 fTriggerParam(0x0)
20{
21 // default constructor
22}
23
24//______________________________________________________________________________________________
25AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal) :
26 fSignal(signal),
27 fTriggerParam(GetTriggerParamFromOCDB())
28{
29 // standard constructor I
30 // gets the trigger parameters directly from OCDB
31}
32
33//______________________________________________________________________________________________
34AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal, AliZDCTriggerParameters* ocdbParam) :
35 fSignal(signal),
36 fTriggerParam(ocdbParam)
37{
38 // standard constructor II
39}
40
db0907f4 41//_____________________________________________________________________________
42AliZDCTriggerProcessor &AliZDCTriggerProcessor::operator =(const AliZDCTriggerProcessor &trig)
43{
213a7d34 44 // Equal operator.
45 this->~AliZDCTriggerProcessor();
46 new(this) AliZDCTriggerProcessor(trig);
47 return *this;
db0907f4 48
49}
50
3288dac3 51//______________________________________________________________________________________________
52AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) :
db0907f4 53 TObject(),
3288dac3 54 fSignal(trigg.fSignal),
55 fTriggerParam(trigg.fTriggerParam)
56{
57 // copy constructor
58}
59
60//______________________________________________________________________________________________
61AliZDCTriggerProcessor::~AliZDCTriggerProcessor()
62{
63 // destructor
64}
65
66//______________________________________________________________________________________________
67UInt_t AliZDCTriggerProcessor::ProcessEvent()
68{
69 // process ZDC signals in order to determine the trigger output
70 UInt_t ctpInput = 0;
71 //
db0907f4 72 Bool_t mbTriggered = MBTrigger();
73 if(mbTriggered == kTRUE) ctpInput = 0x1;
74 Bool_t cenTriggered = CentralTrigger();
75 if(cenTriggered == kTRUE) ctpInput = 0x1 << 1;
76 Bool_t semicenTriggered = SemicentralTrigger();
77 if(semicenTriggered == kTRUE) ctpInput = 0x1 << 2;
78 Bool_t emdTriggered = EMDTrigger();
79 if(emdTriggered == kTRUE) ctpInput = 0x1 << 3;
80
81 if((mbTriggered == kTRUE) || (cenTriggered == kTRUE) ||
82 (semicenTriggered == kTRUE) || (emdTriggered == kTRUE)){
03f508de 83 return ctpInput;
db0907f4 84 }
85 else{
86 return 0;
87 }
3288dac3 88}
89
90//______________________________________________________________________________________________
91Bool_t AliZDCTriggerProcessor::MBTrigger()
92{
93 // is the processed event a MB A-A event?
bbcf5200 94 Float_t mbTrheshold = 0.;
95 if(fTriggerParam) mbTrheshold = fTriggerParam->GetADCMBThreshold();
3288dac3 96 // check whether ZDC signal > mbTrheshold
97 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > mbTrheshold)
98 return kTRUE;
99 else return kFALSE;
100
101}
102
103//______________________________________________________________________________________________
104Bool_t AliZDCTriggerProcessor::CentralTrigger()
105{
106 // is the processed event a central A-A event?
107
bbcf5200 108 Float_t zemThr = 0;
109 Float_t centralWin[2] = {0,0};
110 if(fTriggerParam){
111 zemThr = fTriggerParam->GetADCZDCCentralityThr();
112 const Float_t* cWin = fTriggerParam->GetADCCentralWindow();
113 centralWin[0] = cWin[0];
114 centralWin[1] = cWin[1];
115 }
3288dac3 116 //
117 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > centralWin[0]
118 &&
119 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < centralWin[1]
120 &&
121 fSignal[2] > zemThr)
122 return kTRUE;
123 else return kFALSE;
124}
125
126//______________________________________________________________________________________________
127Bool_t AliZDCTriggerProcessor::SemicentralTrigger()
128{
129 // is the processed event a semicentral A-A event?
130
bbcf5200 131 Float_t zemThr = 0;
132 Float_t semicentralWin[2] = {0,0};
133 if(fTriggerParam){
134 zemThr = fTriggerParam->GetADCZDCCentralityThr();
135 const Float_t* cWin = fTriggerParam->GetADCSemicentralWindow();
136 semicentralWin[0] = cWin[0];
137 semicentralWin[1] = cWin[1];
138 }
3288dac3 139 //
140 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > semicentralWin[0]
141 &&
142 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < semicentralWin[1]
143 &&
144 fSignal[2] > zemThr)
145 return kTRUE;
146 else return kFALSE;
147}
148
149//______________________________________________________________________________________________
150Bool_t AliZDCTriggerProcessor::EMDTrigger()
151{
152 // is the processed an EMD event?
153
bbcf5200 154 Float_t emdWin[4] = {0,0,0,0};
155 if(fTriggerParam){
156 const Float_t* eWin = fTriggerParam->GetADCEMDWindow();
157 emdWin[0] = eWin[0];
158 emdWin[1] = eWin[1];
159 emdWin[2] = eWin[2];
160 emdWin[3] = eWin[3];
161 }
3288dac3 162 // check whether ZNA AND ZNC signals fall into the
163 // 2 distinct windows defined for EMD trigger
164 if(fSignal[0] > emdWin[0] && fSignal[0] < emdWin[1]
165 &&
166 fSignal[3] > emdWin[2] && fSignal[3] < emdWin[3])
167 return kTRUE;
168 else return kFALSE;
169}
170
171//______________________________________________________________________________________________
172AliZDCTriggerParameters* AliZDCTriggerProcessor::GetTriggerParamFromOCDB() const
173{
174 // retrieving trigger parameter configuration form OCDB
bbcf5200 175 AliZDCTriggerParameters *trigParam = 0x0;
3288dac3 176 AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Trigger/");
177 if(!entry) AliFatal("No calibration data loaded!");
be7fc6f8 178 else{
bbcf5200 179 trigParam = dynamic_cast<AliZDCTriggerParameters*> (entry->GetObject());
be7fc6f8 180 if(!trigParam) AliFatal("Wrong calibration object in calibration file!");
be7fc6f8 181 }
bbcf5200 182
183 return trigParam;
3288dac3 184}