1 #include "AliZDCTriggerProcessor.h"
2 #include "AliCDBManager.h"
3 #include "AliCDBEntry.h"
4 #include "AliCDBMetaData.h"
6 #include "AliZDCTriggerParameters.h"
8 /////////////////////////////////////////////////////////////////////
10 // Class implementing ZDC trigger processor. //
12 /////////////////////////////////////////////////////////////////////
14 ClassImp(AliZDCTriggerProcessor)
16 //______________________________________________________________________________________________
17 AliZDCTriggerProcessor::AliZDCTriggerProcessor() :
21 // default constructor
24 //______________________________________________________________________________________________
25 AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal) :
27 fTriggerParam(GetTriggerParamFromOCDB())
29 // standard constructor I
30 // gets the trigger parameters directly from OCDB
33 //______________________________________________________________________________________________
34 AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal, AliZDCTriggerParameters* ocdbParam) :
36 fTriggerParam(ocdbParam)
38 // standard constructor II
41 //_____________________________________________________________________________
42 AliZDCTriggerProcessor &AliZDCTriggerProcessor::operator =(const AliZDCTriggerProcessor &trig)
45 this->~AliZDCTriggerProcessor();
46 new(this) AliZDCTriggerProcessor(trig);
51 //______________________________________________________________________________________________
52 AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) :
54 fSignal(trigg.fSignal),
55 fTriggerParam(trigg.fTriggerParam)
60 //______________________________________________________________________________________________
61 AliZDCTriggerProcessor::~AliZDCTriggerProcessor()
66 //______________________________________________________________________________________________
67 UInt_t AliZDCTriggerProcessor::ProcessEvent()
69 // process ZDC signals in order to determine the trigger output
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;
81 if((mbTriggered == kTRUE) || (cenTriggered == kTRUE) ||
82 (semicenTriggered == kTRUE) || (emdTriggered == kTRUE)){
90 //______________________________________________________________________________________________
91 Bool_t AliZDCTriggerProcessor::MBTrigger()
93 // is the processed event a MB A-A event?
94 Float_t mbTrheshold = 0.;
95 if(fTriggerParam) mbTrheshold = fTriggerParam->GetADCMBThreshold();
96 // check whether ZDC signal > mbTrheshold
97 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > mbTrheshold)
103 //______________________________________________________________________________________________
104 Bool_t AliZDCTriggerProcessor::CentralTrigger()
106 // is the processed event a central A-A event?
109 Float_t centralWin[2] = {0,0};
111 zemThr = fTriggerParam->GetADCZDCCentralityThr();
112 const Float_t* cWin = fTriggerParam->GetADCCentralWindow();
113 centralWin[0] = cWin[0];
114 centralWin[1] = cWin[1];
117 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > centralWin[0]
119 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < centralWin[1]
126 //______________________________________________________________________________________________
127 Bool_t AliZDCTriggerProcessor::SemicentralTrigger()
129 // is the processed event a semicentral A-A event?
132 Float_t semicentralWin[2] = {0,0};
134 zemThr = fTriggerParam->GetADCZDCCentralityThr();
135 const Float_t* cWin = fTriggerParam->GetADCSemicentralWindow();
136 semicentralWin[0] = cWin[0];
137 semicentralWin[1] = cWin[1];
140 if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > semicentralWin[0]
142 (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < semicentralWin[1]
149 //______________________________________________________________________________________________
150 Bool_t AliZDCTriggerProcessor::EMDTrigger()
152 // is the processed an EMD event?
154 Float_t emdWin[4] = {0,0,0,0};
156 const Float_t* eWin = fTriggerParam->GetADCEMDWindow();
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]
166 fSignal[3] > emdWin[2] && fSignal[3] < emdWin[3])
171 //______________________________________________________________________________________________
172 AliZDCTriggerParameters* AliZDCTriggerProcessor::GetTriggerParamFromOCDB() const
174 // retrieving trigger parameter configuration form OCDB
175 AliZDCTriggerParameters *trigParam = 0x0;
176 AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Trigger/");
177 if(!entry) AliFatal("No calibration data loaded!");
179 trigParam = dynamic_cast<AliZDCTriggerParameters*> (entry->GetObject());
180 if(!trigParam) AliFatal("Wrong calibration object in calibration file!");