]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ZDC/AliZDCTriggerProcessor.cxx
online hot channels introduced
[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{
44 //assignment operator
45 fSignal = trig.GetSignal();
46 fTriggerParam = trig.GetTriggerParamFromOCDB();
47
48}
49
3288dac3 50//______________________________________________________________________________________________
51AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) :
db0907f4 52 TObject(),
3288dac3 53 fSignal(trigg.fSignal),
54 fTriggerParam(trigg.fTriggerParam)
55{
56 // copy constructor
57}
58
59//______________________________________________________________________________________________
60AliZDCTriggerProcessor::~AliZDCTriggerProcessor()
61{
62 // destructor
63}
64
65//______________________________________________________________________________________________
66UInt_t AliZDCTriggerProcessor::ProcessEvent()
67{
68 // process ZDC signals in order to determine the trigger output
69 UInt_t ctpInput = 0;
70 //
db0907f4 71 Bool_t mbTriggered = MBTrigger();
72 if(mbTriggered == kTRUE) ctpInput = 0x1;
73 Bool_t cenTriggered = CentralTrigger();
74 if(cenTriggered == kTRUE) ctpInput = 0x1 << 1;
75 Bool_t semicenTriggered = SemicentralTrigger();
76 if(semicenTriggered == kTRUE) ctpInput = 0x1 << 2;
77 Bool_t emdTriggered = EMDTrigger();
78 if(emdTriggered == kTRUE) ctpInput = 0x1 << 3;
79
80 if((mbTriggered == kTRUE) || (cenTriggered == kTRUE) ||
81 (semicenTriggered == kTRUE) || (emdTriggered == kTRUE)){
82 return 1;
83 }
84 else{
85 return 0;
86 }
3288dac3 87}
88
89//______________________________________________________________________________________________
90Bool_t AliZDCTriggerProcessor::MBTrigger()
91{
92 // is the processed event a MB A-A event?
93
94 Float_t mbTrheshold = fTriggerParam->GetADCMBThreshold();
95 // check whether ZDC signal > mbTrheshold
96 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > mbTrheshold)
97 return kTRUE;
98 else return kFALSE;
99
100}
101
102//______________________________________________________________________________________________
103Bool_t AliZDCTriggerProcessor::CentralTrigger()
104{
105 // is the processed event a central A-A event?
106
107 Float_t zemThr = fTriggerParam->GetADCZDCCentralityThr();
108 const Float_t* centralWin = fTriggerParam->GetADCCentralWindow();
109 //
110 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > centralWin[0]
111 &&
112 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < centralWin[1]
113 &&
114 fSignal[2] > zemThr)
115 return kTRUE;
116 else return kFALSE;
117}
118
119//______________________________________________________________________________________________
120Bool_t AliZDCTriggerProcessor::SemicentralTrigger()
121{
122 // is the processed event a semicentral A-A event?
123
124 Float_t zemThr = fTriggerParam->GetADCZDCCentralityThr();
125 const Float_t* semicentralWin = fTriggerParam->GetADCSemicentralWindow();
126 //
127 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > semicentralWin[0]
128 &&
129 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < semicentralWin[1]
130 &&
131 fSignal[2] > zemThr)
132 return kTRUE;
133 else return kFALSE;
134}
135
136//______________________________________________________________________________________________
137Bool_t AliZDCTriggerProcessor::EMDTrigger()
138{
139 // is the processed an EMD event?
140
141 const Float_t* emdWin = fTriggerParam->GetADCEMDWindow();
142 // check whether ZNA AND ZNC signals fall into the
143 // 2 distinct windows defined for EMD trigger
144 if(fSignal[0] > emdWin[0] && fSignal[0] < emdWin[1]
145 &&
146 fSignal[3] > emdWin[2] && fSignal[3] < emdWin[3])
147 return kTRUE;
148 else return kFALSE;
149}
150
151//______________________________________________________________________________________________
152AliZDCTriggerParameters* AliZDCTriggerProcessor::GetTriggerParamFromOCDB() const
153{
154 // retrieving trigger parameter configuration form OCDB
155 AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Trigger/");
156 if(!entry) AliFatal("No calibration data loaded!");
157
158 AliZDCTriggerParameters *trigParam = dynamic_cast<AliZDCTriggerParameters*> (entry->GetObject());
159 if(!trigParam) AliFatal("Wrong calibration object in calibration file!");
160
161 return trigParam;
162
163}