Line data Source code
1 : /**
2 : * \file AliEMCALTriggerPatchInfo.h
3 : * \brief Class to make array of trigger patch objects in AOD/ESD events.
4 : *
5 : * Emcal trigger patch information class
6 : * Can contain three types of information, distinguished by the various bits in the bit field:
7 : * -# online trigger information (no extra bits set)
8 : * -# offline recalculated trigger patches (bit 25, kSimpleOfflineTriggerBit set)
9 : * -# highest patch energy, also for events that did not fire the trigger (bits 22, 23 kRecalc... (using both online and offline info, use bit 25 to distinguish)
10 : *
11 : * \author Jiri Kral <>, University of Jyväskulä
12 : * \date Jun 26, 2013
13 : */
14 : #ifndef ALIEMCALTRIGGERPATCHINFO_H
15 : #define ALIEMCALTRIGGERPATCHINFO_H
16 : /* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
17 : * See cxx source for full Copyright notice */
18 :
19 : #include "TObject.h"
20 :
21 : #include <TLorentzVector.h>
22 : #include <TMath.h>
23 : #include "AliEMCALTriggerBitConfig.h"
24 : #include "AliEMCALTriggerConstants.h"
25 :
26 :
27 : class AliEMCALGeometry;
28 : class TArrayI;
29 :
30 :
31 : /**
32 : * \class AliEMCALTriggerPatchInfo
33 : * \brief Main data structure storing all relevant information of EMCAL/DCAL trigger patches
34 : *
35 : * Emcal trigger patch information class
36 : * Can contain three types of information, distinguished by the various bits in the bit field:
37 : * -# online trigger information (no extra bits set)
38 : * -# offline recalculated trigger patches (bit 25, kSimpleOfflineTriggerBit set)
39 : * -# highest patch energy, also for events that did not fire the trigger (bits 22, 23 kRecalc... (using both online and offline info, use bit 25 to distinguish)
40 : */
41 : class AliEMCALTriggerPatchInfo: public TObject {
42 :
43 : public:
44 : enum {
45 : kRecalcOffset = 16,
46 : kOfflineOffset = 24
47 : };
48 :
49 : enum CaloDetectorType_t {
50 : kEMCALdet = 0,
51 : kDCALPHOSdet = 1
52 : };
53 :
54 : AliEMCALTriggerPatchInfo();
55 : AliEMCALTriggerPatchInfo(const AliEMCALTriggerPatchInfo &p);
56 : AliEMCALTriggerPatchInfo &operator=(const AliEMCALTriggerPatchInfo &p);
57 : virtual ~AliEMCALTriggerPatchInfo();
58 :
59 : void Reset();
60 :
61 : /**
62 : * Initialize patch
63 : * @param col0 Start column of the patch
64 : * @param row0 Start row of the patch
65 : * @param size Size of the patch
66 : * @param adc ADC signal of the patch
67 : * @param offlineAdc Offline ADC signal of the patch
68 : * @param patchE Energy of the patch (sum of cell amplitudes)
69 : * @param bitmask Trigger bit mask of the patch
70 : * @param vertex Primary vertex of the event
71 : * @param geom Pointer to the EMCal geometry object
72 : */
73 : void Initialize(UChar_t col0, UChar_t row0, UChar_t size, UInt_t adc, UInt_t offlineAdc, Double_t patchE, UInt_t bitmask, const TVector3& vertex, const AliEMCALGeometry* geom);
74 :
75 : /**
76 : * Allocate a new AliEMCALTriggerPatchInfo object and initialize it
77 : * @param col0 Start column of the patch
78 : * @param row0 Start row of the patch
79 : * @param size Size of the patch
80 : * @param adc ADC signal of the patch
81 : * @param offlineAdc Offline ADC signal of the patch
82 : * @param patchE Energy of the patch (sum of cell amplitudes)
83 : * @param bitmask Trigger bit mask of the patch
84 : * @param vertex Primary vertex of the event
85 : * @param geom Pointer to the EMCal geometry object
86 : * @return Pointer to a new and initialized AliEMCALTriggerPatchInfo object (caller is responsible for releasing memory)
87 : */
88 : static AliEMCALTriggerPatchInfo* CreateAndInitialize(UChar_t col0, UChar_t row0, UChar_t size, UInt_t adc, UInt_t offlineAdc, Double_t patchE, UInt_t bitmask, const TVector3& vertex, const AliEMCALGeometry* geom);
89 :
90 : /**
91 : * Recalculate patch kinematic variables
92 : * @param patchE Energy of the patch (sum of cell amplitudes)
93 : * @param vertex Primary vertex of the event
94 : * @param geom Pointer to the EMCal geometry object
95 : */
96 : void RecalculateKinematics(Double_t patchE, const TVector3& vertex, const AliEMCALGeometry* geom);
97 :
98 : /**
99 : * Access \f$ \phi \f$ angle of the geometric center of the trigger patch
100 : * @return \f$ \phi \f$ angle
101 : */
102 0 : Double_t GetPhiGeo() const { return GetPhiTransform(fCenterGeo.Phi()); }
103 : /**
104 : * Access \f$ \phi \f$ angle of the patch at the center of mass
105 : * @return \f$ \phi \f$ angle
106 : */
107 0 : Double_t GetPhiCM() const { return GetPhiTransform(fCenterMass.Phi()); }
108 : /**
109 : * Get minimal \f$ \phi \f$ of the patch
110 : * @return \f$ \phi \f$ angle
111 : */
112 0 : Double_t GetPhiMin() const { return GetPhiTransform(fEdge1.Phi()); }
113 : /**
114 : * Get maximal \f$ \phi \f$ of the patch
115 : * @return \f$ \phi \f$ angle
116 : */
117 0 : Double_t GetPhiMax() const { return GetPhiTransform(fEdge2.Phi()); }
118 : /**
119 : * Get \f$ \eta \f$ of the patch at the geometrical center
120 : * @return Patch \f$ \eta \f$
121 : */
122 0 : Double_t GetEtaGeo() const { return fCenterGeo.Eta(); }
123 : /**
124 : * Get \f$ \eta \f$ of the patch at the center of mass
125 : * @return Patch \f$ \eta \f$
126 : */
127 0 : Double_t GetEtaCM() const { return fCenterMass.Eta(); }
128 : /**
129 : * Get minimum \f$ \eta \f$ of the patch
130 : * @return Patch \f$ \eta \f$
131 : */
132 0 : Double_t GetEtaMin() const { return fEdge2.Eta(); }
133 : /**
134 : * Get maximum \f$ \eta \f$ of the patch
135 : * @return Patch \f$ \eta \f$
136 : */
137 0 : Double_t GetEtaMax() const { return fEdge1.Eta(); }
138 : /**
139 : * Get the patch energy
140 : * @return Patch energy
141 : */
142 0 : Double_t GetPatchE() const { return fCenterGeo.E(); }
143 : /**
144 : * Get patch online ADC amplitude
145 : * @return Online patch amplitude
146 : */
147 0 : Int_t GetADCAmp() const { return fADCAmp; }
148 : /**
149 : * Get patch offline ADC amplitude (obtained from calibrated cell energies converted into ADC signals)
150 : * @return Offline patch amplitude
151 : */
152 0 : Int_t GetADCOfflineAmp() const { return fADCOfflineAmp; }
153 : /**
154 : * Get patch energy estimated from offline ADC amplitude converted into energya
155 : * @return Patch energy estimate
156 : */
157 0 : Double_t GetADCAmpGeVRough() const { return (Double_t)fADCAmp * EMCALTrigger::kEMCL1ADCtoGeV; }
158 : /**
159 : * Get the trigger bits of the classes which fired the patch
160 : * @return Selected trigger bits
161 : */
162 0 : Int_t GetTriggerBits() const { return fTriggerBits; }
163 : /**
164 : * Get X position of the edge cell
165 : * @return Cell x-position
166 : */
167 0 : Int_t GetEdgeCellX() const { return fEdgeCell[0]; }
168 : /**
169 : * Get Y position of the edge cell
170 : * @return Cell y-position
171 : */
172 0 : Int_t GetEdgeCellY() const { return fEdgeCell[1]; }
173 : void GetCellIndices( AliEMCALGeometry *geom, TArrayI *cells );
174 :
175 : /**
176 : * Get the transverse energy of the patch
177 : * @return Transverse energy of the patch
178 : */
179 0 : Double_t GetPatchET() const { return GetET(GetPatchE()); }
180 : /**
181 : * Get the online transverse energy of the patch
182 : * @return online transverse energy of the patch
183 : */
184 0 : Double_t GetPatchETfromADCAmp() const { return GetET(GetADCAmpGeVRough()); }
185 :
186 : /**
187 : * Get the starting row of the patch
188 : * @return Starting row of the patch
189 : */
190 0 : Int_t GetRowStart() const { return fRow0; }
191 :
192 : /**
193 : * Get the starting column of the patch
194 : * @return Starting column of the patch
195 : */
196 0 : Int_t GetColStart() const { return fCol0; }
197 :
198 : /**
199 : * Check whether patch is an EMCAL Level0 patch
200 : * @return True if patch is an EMCAL Level0 patch, false otherwise
201 : */
202 0 : Bool_t IsLevel0() const { return TESTBIT(fTriggerBits, fOffSet + fTriggerBitConfig.GetLevel0Bit()); }
203 : /**
204 : * Check whether patch is an EMCAL Level1 jet patch passing the low threshold, found by the trigger electronics or the trigger simulation
205 : * @return True if patch matches the trigger condition, false otherwise
206 : */
207 0 : Bool_t IsJetLow() const { return TESTBIT(fTriggerBits, fOffSet + fTriggerBitConfig.GetJetLowBit()); }
208 : /**
209 : * Check whether patch is an EMCAL Level1 jet patch passing the high threshold, found by the trigger electronics or the trigger simulation
210 : * @return True if patch matches the trigger condition, false otherwise
211 : */
212 0 : Bool_t IsJetHigh() const { return TESTBIT(fTriggerBits, fOffSet + fTriggerBitConfig.GetJetHighBit()); }
213 : /**
214 : * Check whether patch is an EMCAL Level1 gamma patch passing the low threshold, found by the trigger electronics or the trigger simulation
215 : * @return True if patch matches the trigger condition, false otherwise
216 : */
217 0 : Bool_t IsGammaLow() const { return TESTBIT(fTriggerBits, fOffSet + fTriggerBitConfig.GetGammaLowBit()); }
218 : /**
219 : * Check whether patch is an EMCAL Level1 gamma patch passing the high threshold, found by the trigger electronics or the trigger simulation
220 : * @return True if patch matches the trigger condition, false otherwise
221 : */
222 0 : Bool_t IsGammaHigh() const { return TESTBIT(fTriggerBits, fOffSet + fTriggerBitConfig.GetGammaHighBit()); }
223 : /**
224 : * No background patches from hardware
225 : * @return Always false
226 : */
227 0 : Bool_t IsBkg() const { return false; }
228 : /**
229 : * No main trigger any more
230 : * @return Always false
231 : */
232 0 : Bool_t IsMainTrigger() const { return false; }
233 : /**
234 : * Check whether patch is an EMCAL Level1 jet patch passing the low threshold, found by the simple offline trigger
235 : * @return True if patch matches the trigger condition, false otherwise
236 : */
237 0 : Bool_t IsLevel0Simple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetLevel0Bit()); }
238 : /**
239 : * Check whether patch is an EMCAL Level1 jet patch passing the low threshold, found by the simple offline trigger
240 : * @return True if patch matches the trigger condition, false otherwise
241 : */
242 0 : Bool_t IsJetLowSimple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetJetLowBit()); }
243 : /**
244 : * Check whether patch is an EMCAL Level1 jet patch passing the high threshold, found by the simple offline trigger
245 : * @return True if patch matches the trigger condition, false otherwise
246 : */
247 0 : Bool_t IsJetHighSimple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetJetHighBit()); }
248 : /**
249 : * Check whether patch is an EMCAL Level1 gamma patch passing the low threshold, found by the simple offline trigger
250 : * @return True if patch matches the trigger condition, false otherwise
251 : */
252 0 : Bool_t IsGammaLowSimple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetGammaLowBit()); }
253 : /**
254 : * Check whether patch is an EMCAL Level1 gamma patch passing the high threshold, found by the simple offline trigger
255 : * @return True if patch matches the trigger condition, false otherwise
256 : */
257 0 : Bool_t IsGammaHighSimple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetGammaHighBit()); }
258 : /**
259 : * Check whether patch is an EMCAL background patch, found by the simple offline trigger
260 : * @return True if patch matches the trigger condition, false otherwise
261 : */
262 0 : Bool_t IsBkgSimple() const { return TESTBIT(fTriggerBits, kOfflineOffset + fTriggerBitConfig.GetBkgBit()); }
263 : /**
264 : * Check whether patch is an EMCAL Level1 jet patch passing the low threshold, found by the simple offline trigger
265 : * @return True if patch matches the trigger condition, false otherwise
266 : */
267 0 : Bool_t IsLevel0Recalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetLevel0Bit()); }
268 : /**
269 : * Check whether patch is an EMCAL Level1 jet patch passing the low threshold, found by the simple offline trigger
270 : * @return True if patch matches the trigger condition, false otherwise
271 : */
272 0 : Bool_t IsJetLowRecalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetJetLowBit()); }
273 : /**
274 : * Check whether patch is an EMCAL Level1 jet patch passing the high threshold, found by the simple offline trigger
275 : * @return True if patch matches the trigger condition, false otherwise
276 : */
277 0 : Bool_t IsJetHighRecalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetJetHighBit()); }
278 : /**
279 : * Check whether patch is an EMCAL Level1 gamma patch passing the low threshold, found by the simple offline trigger
280 : * @return True if patch matches the trigger condition, false otherwise
281 : */
282 0 : Bool_t IsGammaLowRecalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetGammaLowBit()); }
283 : /**
284 : * Check whether patch is an EMCAL Level1 gamma patch passing the high threshold, found by the simple offline trigger
285 : * @return True if patch matches the trigger condition, false otherwise
286 : */
287 0 : Bool_t IsGammaHighRecalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetGammaHighBit()); }
288 : /**
289 : * Check whether patch is an EMCAL background patch, found by the simple offline trigger
290 : * @return True if patch matches the trigger condition, false otherwise
291 : */
292 0 : Bool_t IsBkgRecalc() const { return TESTBIT(fTriggerBits, kRecalcOffset + fTriggerBitConfig.GetBkgBit()); }
293 : /**
294 : * Now main trigger any more in the new definition
295 : * @return Always false
296 : */
297 0 : Bool_t IsMainTriggerSimple() const { return kFALSE; }
298 : /**
299 : * Check whether patch is found by the simple offline trigger (on offline amplitudes)
300 : * @return True if the patch is found by the simple offline trigger, false otherwise
301 : */
302 0 : Bool_t IsOfflineSimple() const { return IsJetLowSimple() || IsJetHighSimple() || IsGammaLowSimple() || IsGammaHighSimple(); }
303 :
304 : /**
305 : * Check whether patch is found by the simple offline trigger (on offline amplitudes)
306 : * @return True if the patch is found by the simple offline trigger, false otherwise
307 : */
308 0 : Bool_t IsRecalc() const { return IsJetLowRecalc() || IsJetHighRecalc() || IsGammaLowRecalc() || IsGammaHighRecalc(); }
309 :
310 : /**
311 : * Check whether patch is found by the simple offline trigger (on offline amplitudes)
312 : * @return True if the patch is found by the simple offline trigger, false otherwise
313 : */
314 0 : Bool_t IsOnline() const { return IsJetLow() || IsJetHigh() || IsGammaLow() || IsGammaHigh(); }
315 :
316 : /**
317 : * Access to Lorentz Vector of the centre-of-mass of the trigger patch
318 : * @return Lorentz Vector of the centre-of-mass of the trigger patch
319 : */
320 0 : const TLorentzVector &GetLorentzVectorCM() const { return fCenterMass; }
321 : /**
322 : * Access to Lorentz Vector of the geometrical centre of the trigger patch
323 : * @return Lorentz Vector of the geometrical centre of the trigger patch
324 : */
325 0 : const TLorentzVector &GetLorentzVectorCenterGeo() const { return fCenterGeo; }
326 : /**
327 : * Access to Lorentz Vector of the lower left edge of the trigger patch
328 : * @return Lorentz Vector of the lower left edge of the trigger patch
329 : */
330 0 : const TLorentzVector &GetLorentzVectorEdge1() const { return fEdge1; }
331 : /**
332 : * Access to Lorentz Vector of the upper right edge of the trigger patch
333 : * @return Lorentz Vector of the upper right edge of the trigger patch
334 : */
335 0 : const TLorentzVector &GetLorentzVectorEdge2() const { return fEdge2; }
336 :
337 : // Recalculated max patches
338 : /**
339 : * Check if the patch is a recalculated jet patch
340 : * @return True if the patch is a recalculated jet patch, false otherwise
341 : */
342 0 : Bool_t IsRecalcJet() const { return IsJetLowRecalc() || IsJetHighRecalc(); }
343 : /**
344 : * Check if the patch is a recalculated gamma patch
345 : * @return True if the patch is a recalculated gamma patch, false otherwise
346 : */
347 0 : Bool_t IsRecalcGamma() const { return IsGammaLowRecalc() || IsGammaHighRecalc(); }
348 :
349 : /**
350 : * Check whether patch is in the EMCal
351 : * @return True if the patch is in the EMCal
352 : */
353 0 : Bool_t IsEMCal() const { return (fDetectorType == kEMCALdet) ; }
354 :
355 : /**
356 : * Check whether patch is in the EMCal
357 : * @return True if the patch is in the EMCal
358 : */
359 0 : Bool_t IsDCalPHOS() const { return (fDetectorType == kDCALPHOSdet); }
360 :
361 : /**
362 : * @return Detector in which the patch is located (EMCal or DCal/PHOS)
363 : */
364 0 : CaloDetectorType_t GetDetectorType() const { return fDetectorType ; }
365 :
366 : /**
367 : * Check whether a trigger bit is set
368 : * @param bitnumber Bit number to be tested
369 : * @return True if the bit is set
370 : */
371 0 : Bool_t TestTriggerBit(UInt_t bitnumber) const { return TESTBIT(fTriggerBits, bitnumber); }
372 :
373 : /**
374 : * Returns the patch size
375 : * @return patch size
376 : */
377 0 : UChar_t GetPatchSize() const { return fPatchSize; }
378 :
379 : /**
380 : * Set the starting row
381 : * @param row0 Starting row of the patch
382 : */
383 0 : void SetRowStart(int row0) { fRow0 = row0; }
384 :
385 : /**
386 : * Set the starting column
387 : * @param col0 Starting column of the patch
388 : */
389 0 : void SetCol0(int col0) { fCol0 = col0; }
390 :
391 : /**
392 : * Set the geometric center position of the patch
393 : * @param v Position 3-vector
394 : * @param e Patch energy
395 : */
396 0 : void SetCenterGeo( const TVector3 &v, Double_t e ) { SetLorentzVector( fCenterGeo, v, e ); }
397 : /**
398 : * Set the geometric center position of the patch
399 : * @param v Position Lorentz vector
400 : */
401 0 : void SetCenterGeo( const TLorentzVector &v ) { fCenterGeo = v; }
402 : /**
403 : * Set the center-of-mass position of the trigger patch
404 : * @param v Position Lorentz vector
405 : */
406 0 : void SetCenterMass( const TLorentzVector &v ) { fCenterMass = v; }
407 : /**
408 : * Set the center-of-mass position of the trigger patch
409 : * @param v Position 3-vector
410 : * @param e Patch energy
411 : */
412 0 : void SetCenterMass( const TVector3 &v, Double_t e ) { SetLorentzVector( fCenterMass, v, e ); }
413 : /**
414 : * Set lower edge position of the trigger patch
415 : * @param v Position Lorentz vector
416 : */
417 0 : void SetEdge1( const TLorentzVector &v ) { fEdge1 = v; }
418 : /**
419 : * Set lower edge position of the trigger patch
420 : * @param v Position 3-vector
421 : * @param e Patch energy
422 : */
423 0 : void SetEdge1( const TVector3 &v, Double_t e ) { SetLorentzVector( fEdge1, v, e ); }
424 : /**
425 : * Set upper edge position of the trigger patch
426 : * @param v Lorentz-vector of the upper edge position of the trigger patch
427 : */
428 0 : void SetEdge2( const TLorentzVector &v ) { fEdge2 = v; }
429 : /**
430 : * Set upper edge position of the trigger patch
431 : * @param v Position 3-vector
432 : * @param e Patch Energy
433 : */
434 0 : void SetEdge2( const TVector3 &v, Double_t e ) { SetLorentzVector( fEdge2, v, e ); }
435 : /**
436 : * Set online ADC amplitude
437 : * @param a Online ADC amplitude
438 : */
439 0 : void SetADCAmp( Int_t a ) { fADCAmp = a; }
440 : /**
441 : * Set offline ADC amplitude (derived from cell energies converted to ADC amplitude)
442 : * @param a Offline ADC amplitude
443 : */
444 0 : void SetADCOfflineAmp( Int_t a ) { fADCOfflineAmp = a; }
445 : /**
446 : * Set Indices in x and y of the edge cell
447 : * @param x Cell index in x-direction
448 : * @param y Cell index in y-direction
449 : */
450 0 : void SetEdgeCell( Int_t x, Int_t y ) { fEdgeCell[0] = x; fEdgeCell[1] = y; }
451 :
452 : /**
453 : * No simple offline bit any more as patches contain combined information from
454 : * online, offline and recalc trigger
455 : */
456 0 : void SetOfflineSimple() { }
457 :
458 : void SetLorentzVector( TLorentzVector &lv, const TVector3 &v, Double_t e );
459 :
460 : /**
461 : * Set the trigger bits
462 : * @param i Trigger bits of the patch
463 : */
464 0 : void SetTriggerBits( Int_t i ) { fTriggerBits = i; }
465 :
466 : /**
467 : * Set detector in which the patch is located (EMCal or DCal/PHOS)
468 : * @param t Detector type
469 : */
470 0 : void SetDetectorType(CaloDetectorType_t t) { fDetectorType = t; }
471 :
472 : /**
473 : * Set the MC trigger bit offset
474 : * @param i MC trigger bit offset
475 : */
476 0 : void SetOffSet(Int_t i) { fOffSet = i; }
477 :
478 : /**
479 : * Set the trigger bit configuration
480 : * @param ref Trigger bit configuration used to create the patch
481 : */
482 0 : void SetTriggerBitConfig(const AliEMCALTriggerBitConfig * ref) { fTriggerBitConfig.Initialise(*ref); }
483 :
484 : /**
485 : * Get the trigger bit configuration used to create the trigger patch
486 : * @return Trigger bit configuration of the patch
487 : */
488 0 : const AliEMCALTriggerBitConfig *GetTriggerBitConfig() const { return &fTriggerBitConfig; }
489 :
490 :
491 : protected:
492 : //TLorentzVector &GetLorentzVector(const Double_t *vertex = 0) const;
493 : Double_t GetPhiTransform(Double_t phiin) const;
494 : Double_t GetET(Double_t energy) const;
495 :
496 : TLorentzVector fCenterGeo; ///< geometrical center
497 : TLorentzVector fCenterMass; ///< CM
498 : TLorentzVector fEdge1; ///< max eta/ min phi edge
499 : TLorentzVector fEdge2; ///< min eta/ max phi edge
500 : Int_t fADCAmp; ///< online (trigger) ADC amplitude
501 : Int_t fADCOfflineAmp; ///< offline (FEE) ADC amplitude
502 : Int_t fTriggerBits; ///< trigger bit mask, see definitions in AliEMCALTriggerType and TriggerMakerBits_t (above)
503 : Int_t fEdgeCell[2]; ///< cell "bottom lower" edge (min phi, max eta)
504 : Int_t fOffSet; ///< offset of bit (different in data and MC)
505 : Int_t fCol0; ///< Start column
506 : Int_t fRow0; ///< Start row
507 : UChar_t fPatchSize; ///< Trigger patch size
508 : CaloDetectorType_t fDetectorType; ///< Detector type (EMCal or DCal/PHOS)
509 : AliEMCALTriggerBitConfig fTriggerBitConfig; ///< Trigger bit configuration
510 :
511 : /// \cond CLASSIMP
512 22 : ClassDef(AliEMCALTriggerPatchInfo, 6) // Emcal particle class
513 : /// \endcond
514 : };
515 : #endif
|