]>
Commit | Line | Data |
---|---|---|
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 | ||
14 | ClassImp(AliZDCTriggerProcessor) | |
15 | ||
16 | //______________________________________________________________________________________________ | |
17 | AliZDCTriggerProcessor::AliZDCTriggerProcessor() : | |
18 | fSignal(0x0), | |
19 | fTriggerParam(0x0) | |
20 | { | |
21 | // default constructor | |
22 | } | |
23 | ||
24 | //______________________________________________________________________________________________ | |
25 | AliZDCTriggerProcessor::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 | //______________________________________________________________________________________________ | |
34 | AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal, AliZDCTriggerParameters* ocdbParam) : | |
35 | fSignal(signal), | |
36 | fTriggerParam(ocdbParam) | |
37 | { | |
38 | // standard constructor II | |
39 | } | |
40 | ||
db0907f4 | 41 | //_____________________________________________________________________________ |
42 | AliZDCTriggerProcessor &AliZDCTriggerProcessor::operator =(const AliZDCTriggerProcessor &trig) | |
43 | { | |
44 | //assignment operator | |
45 | fSignal = trig.GetSignal(); | |
46 | fTriggerParam = trig.GetTriggerParamFromOCDB(); | |
47 | ||
48 | } | |
49 | ||
3288dac3 | 50 | //______________________________________________________________________________________________ |
51 | AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) : | |
db0907f4 | 52 | TObject(), |
3288dac3 | 53 | fSignal(trigg.fSignal), |
54 | fTriggerParam(trigg.fTriggerParam) | |
55 | { | |
56 | // copy constructor | |
57 | } | |
58 | ||
59 | //______________________________________________________________________________________________ | |
60 | AliZDCTriggerProcessor::~AliZDCTriggerProcessor() | |
61 | { | |
62 | // destructor | |
63 | } | |
64 | ||
65 | //______________________________________________________________________________________________ | |
66 | UInt_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 | //______________________________________________________________________________________________ | |
90 | Bool_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 | //______________________________________________________________________________________________ | |
103 | Bool_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 | //______________________________________________________________________________________________ | |
120 | Bool_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 | //______________________________________________________________________________________________ | |
137 | Bool_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 | //______________________________________________________________________________________________ | |
152 | AliZDCTriggerParameters* 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 | } |