15 #include <TClonesArray.h> 17 #include <THashList.h> 18 #include "AliAODCaloTrigger.h" 19 #include "AliEMCALGeometry.h" 22 #include "AliEMCALTriggerConstants.h" 23 #include "AliEMCALTriggerDataGrid.h" 24 #include "AliEMCALTriggerPatchInfo.h" 26 #include "AliVCaloCells.h" 27 #include "AliVCaloTrigger.h" 28 #include "AliVVZERO.h" 53 fCaloTriggersOutName(
"EmcalTriggers"),
54 fCaloTriggerSetupOutName(
"EmcalTriggersSetup"),
55 fV0InName(
"AliAODVZERO"),
56 fUseTriggerBitConfig(kNewConfig),
57 fTriggerBitConfig(NULL),
59 fCaloTriggerSetupOut(0),
60 fSimpleOfflineTriggers(0),
62 fPatchAmplitudes(NULL),
63 fPatchADCSimple(NULL),
68 fRejectOffAcceptancePatches(kFALSE),
143 AliFatal(Form(
"%s: Container with same name %s already present. Aborting", GetName(),
fCaloTriggersOutName.Data()));
157 AliFatal(Form(
"%s: Container with same name %s already present. Aborting", GetName(),
fCaloTriggerSetupOutName.Data()));
163 fV0 = (AliVVZERO*)InputEvent()->FindListObject(
fV0InName);
168 int nrows =
fGeom->GetNTotalTRU() * 2;
169 std::cout <<
"Allocating channel grid with 48 columns in eta and " << nrows <<
" rows in phi" << std::endl;
195 std::array<std::string, 3> patchtypes = {{
"Online",
"Offline",
"Recalc"}};
197 for(
int itype = 0; itype < 5; itype++){
198 for(
const auto & patchtype : patchtypes){
199 fQAHistos->
CreateTH2(Form(
"RCPos%s%s",
fgkTriggerTypeNames[itype].
Data(), patchtype.c_str()), Form(
"Lower edge position of %s %s patches (col-row);iEta;iPhi", patchtype.c_str(),
fgkTriggerTypeNames[itype].Data()), 48, -0.5, 47.5, 104, -0.5, 103.5);
200 fQAHistos->
CreateTH2(Form(
"EPCentPos%s%s",
fgkTriggerTypeNames[itype].
Data(), patchtype.c_str()), Form(
"Center position of the %s %s trigger patches;#eta;#phi", patchtype.c_str(),
fgkTriggerTypeNames[itype].Data()), 20, -0.8, 0.8, 700, 0., 7.);
201 fQAHistos->
CreateTH2(Form(
"PatchADCvsE%s%s",
fgkTriggerTypeNames[itype].
Data(), patchtype.c_str()), Form(
"Patch ADC value for trigger type %s %s;Trigger ADC;FEE patch energy (GeV)", patchtype.c_str(),
fgkTriggerTypeNames[itype].Data()), 2000, 0., 2000, 200, 0., 200);
204 fQAHistos->
CreateTH1(
"triggerBitsAll",
"Trigger bits for all incoming patches;bit nr", 64, -0.5, 63.5);
205 fQAHistos->
CreateTH1(
"triggerBitsSel",
"Trigger bits for reconstructed patches;bit nr", 64, -0.5, 63.5);
217 AliEMCALTriggerPatchInfo *trigger(
nullptr), *triggerMainJet(
nullptr),
218 *triggerMainGamma(
nullptr), *triggerMainLevel0(
nullptr),
219 *triggerMainJetSimple(
nullptr), *triggerMainGammaSimple(
nullptr),
220 *triggerMainJetRecalc(
nullptr), *triggerMainGammaRecalc(
nullptr);
227 AliError(Form(
"Calo triggers container %s not available.",
fCaloTriggersName.Data()));
231 AliError(Form(
"Calo cells container %s not available.",
fCaloCellsName.Data()));
235 AliError(Form(
"V0 container %s not available.",
fV0InName.Data()));
268 Int_t globCol=-1, globRow=-1;
277 (*fPatchADC)(globCol,globRow) = adcAmp;
287 if(amplitude < 0) amplitude = 0;
288 (*fPatchAmplitudes)(globCol,globRow) = amplitude;
294 for(
int itime = 0; itime < nl0times; itime++){
295 if(l0times[itime] >7 && l0times[itime] < 10){
296 (*fLevel0TimeMap)(globCol,globRow) = static_cast<Char_t>(l0times[itime]);
306 for(
Int_t iCell = 0; iCell < nCell; ++iCell) {
312 fGeom->GetFastORIndexFromCellIndex(cellId, absId);
313 Int_t globCol=-1, globRow=-1;
314 fGeom->GetPositionInEMCALFromAbsFastORIndex(absId, globCol, globRow);
316 (*fPatchADCSimple)(globCol,globRow) += amp/EMCALTrigger::kEMCL1ADCtoGeV;
329 v0[0] =
fV0->GetTriggerChargeA();
330 v0[1] =
fV0->GetTriggerChargeC();
331 ULong64_t v0S = v0[0] + v0[1];
334 for (
Int_t i = 0; i < 4; ++i) {
368 if (triggerMainJetSimple == 0 || (triggerMainJetSimple->GetPatchE() < trigger->GetPatchE()))
369 triggerMainJetSimple = trigger;
377 if (triggerMainJetRecalc == 0 || (triggerMainJetRecalc->GetPatchE() < trigger->GetPatchE()))
378 triggerMainJetRecalc = trigger;
386 if (triggerMainGammaSimple == 0 || (triggerMainGammaSimple->GetPatchE() < trigger->GetPatchE()))
387 triggerMainGammaSimple = trigger;
395 if (triggerMainGammaRecalc == 0 || (triggerMainGammaRecalc->GetPatchE() < trigger->GetPatchE()))
396 triggerMainGammaRecalc = trigger;
405 if(triggerMainJet == 0 || (triggerMainJet->GetPatchE() < trigger->GetPatchE()))
406 triggerMainJet = trigger;
413 if (triggerMainGamma == 0 || (triggerMainGamma->GetPatchE() < trigger->GetPatchE()))
414 triggerMainGamma = trigger;
419 if (!triggerMainLevel0 || (triggerMainLevel0->GetPatchE() < trigger->GetPatchE()))
420 triggerMainLevel0 = trigger;
427 if (triggerMainJet != 0) {
428 Int_t tBits = triggerMainJet->GetTriggerBits();
431 triggerMainJet->SetTriggerBits( tBits );
433 if (triggerMainJetSimple != 0) {
434 Int_t tBits = triggerMainJetSimple->GetTriggerBits();
437 triggerMainJetSimple->SetTriggerBits(tBits);
439 if (triggerMainJetRecalc != 0) {
440 Int_t tBits = triggerMainJetRecalc->GetTriggerBits();
443 triggerMainJetRecalc->SetTriggerBits(tBits);
445 if (triggerMainGamma != 0) {
446 Int_t tBits = triggerMainGamma->GetTriggerBits();
449 triggerMainGamma->SetTriggerBits( tBits );
451 if (triggerMainGammaSimple != 0) {
452 Int_t tBits = triggerMainGammaSimple->GetTriggerBits();
455 triggerMainGammaSimple->SetTriggerBits( tBits );
457 if (triggerMainGammaRecalc != 0) {
458 Int_t tBits = triggerMainGammaRecalc->GetTriggerBits();
461 triggerMainGammaRecalc->SetTriggerBits( tBits );
463 if(triggerMainLevel0){
464 Int_t tBits = triggerMainLevel0->GetTriggerBits();
467 triggerMainLevel0->SetTriggerBits(tBits);
472 int npatchOnline = 0;
473 for(TIter patchIter = TIter(
fCaloTriggersOut).Begin(); patchIter != TIter::End(); ++patchIter){
474 AliEMCALTriggerPatchInfo *mypatch =
static_cast<AliEMCALTriggerPatchInfo *
>(*patchIter);
475 if(mypatch->IsOfflineSimple())
continue;
476 AliDebug(1,Form(
"Patch with bits: %s, types: JH[%s], JL[%s], GH[%s], GL[%s], L0[%s]",
477 std::bitset<
sizeof(
int)*4>(mypatch->GetTriggerBits()).to_string().c_str(),
478 (mypatch->IsJetHigh() ?
"y" :
"n"), (mypatch->IsJetLow() ?
"y" :
"n"),
479 (mypatch->IsGammaHigh() ?
"y" :
"n"), (mypatch->IsGammaLow() ?
"y" :
"n"),(mypatch->IsLevel0() ?
"y" :
"n")));
482 AliDebug(1, Form(
"Number of online patches: %d", npatchOnline));
498 Int_t tBits=-1, globCol=-1, globRow=-1;
507 if(globCol < 0 || globRow < 0){
510 case kTMOnline: debugpatchtype =
"Online patches";
break;
511 case kTMOffline: debugpatchtype =
"Offline patches";
break;
512 case kTMRecalc: debugpatchtype =
"Recalc patches";
break;
514 AliErrorStream() <<
"Invalid patch position(" << globCol <<
"," << globRow <<
") for " << debugpatchtype << std::endl;
518 for(
unsigned int ibit = 0; ibit <
sizeof(tBits)*8; ibit++) {
519 if(tBits & (1 << ibit)){
541 Int_t runno = InputEvent()->GetRunNumber();
542 if(runno > 176000 && runno <= 197692){
545 AliDebug(1, Form(
"Jet patch in inactive area: row[%d]", globRow));
552 const int kRowsPhi =
fGeom->GetNTotalTRU() * 2;
554 if((globCol + patchsize >=
kColsEta) || (globCol + patchsize >= kRowsPhi)){
555 AliError(Form(
"Invalid patch position for patch type %s: Col[%d], Row[%d] - patch rejected",
fgkTriggerTypeNames[type].
Data(), globCol, globRow));
562 fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol, globRow, absId);
564 Int_t cellAbsId[4]={-1,-1,-1,-1};
565 fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
569 fGeom->GetGlobal(cellAbsId[0], edge1);
570 Int_t colEdge1 = globCol, rowEdge1 = globRow, absIdEdge1 = absId, cellIdEdge1 = cellAbsId[0];
581 for (
Int_t i = 0; i < nfastor; ++i) {
582 for (
Int_t j = 0; j < nfastor; ++j) {
584 fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+i, globRow+j, absId);
585 fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
587 for (
Int_t k = 0; k < 4; ++k) {
597 adcAmp +=
static_cast<Int_t>((*fPatchAmplitudes)(globCol+i,globRow+j) * 4);
600 std::cerr << e.what() << std::endl;
605 adcAmp += (*fPatchADC)(globCol+i,globRow+j);
608 std::cerr << e.what() << std::endl;
614 adcOfflineAmp += (*fPatchADCSimple)(globCol+i,globRow+j);
617 std::cerr << e.what() << std::endl;
624 AliDebug(2,
"EMCal trigger patch with 0 energy.");
635 fGeom->GetAbsFastORIndexFromPositionInEMCAL( cmCol, cmRow, absId );
636 fGeom->GetCellIndexFromFastORIndex( absId, cellAbsId );
639 Int_t cmiCellCol = TMath::Nint(cmiCol * 2.);
640 Int_t cmiCellRow = TMath::Nint(cmiRow * 2.);
642 fGeom->GetGlobal(cellAbsId[(cmiCellRow%2)*2 + cmiCellCol%2], centerMass);
661 fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
662 fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
664 fGeom->GetGlobal(cellAbsId[3], edge2);
665 Int_t colEdge2 = globCol+posOffset, rowEdge2 = globRow+posOffset, absIdEdge2 = absId, cellIdEdge2 = cellAbsId[3];
684 fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
685 fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
687 fGeom->GetGlobal(cellAbsId[3], center1);
700 fGeom->GetAbsFastORIndexFromPositionInEMCAL(globCol+posOffset, globRow+posOffset, absId);
701 fGeom->GetCellIndexFromFastORIndex(absId, cellAbsId);
703 fGeom->GetGlobal(cellAbsId[0], center2);
705 TVector3 centerGeo(center1);
706 centerGeo += center2;
710 TVector3 edge1tmp = edge1, edge2tmp = edge2;
712 centerMass -= vertex;
716 if(!(edge1[0] || edge1[1] || edge1[2])){
717 AliWarning(Form(
"Inconsistency in patch position for edge1: [%f|%f|%f]", edge1[0], edge1[1], edge1[2]));
718 AliWarning(
"Original vectors:");
719 AliWarning(Form(
"edge1: [%f|%f|%f]", edge1tmp[0], edge1tmp[1], edge1tmp[2]));
720 AliWarning(Form(
"vertex: [%f|%f|%f]", vertex[0], vertex[1], vertex[2]));
721 AliWarning(Form(
"Col: %d, Row: %d, FABSID: %d, Cell: %d", colEdge1, rowEdge1, absIdEdge1, cellIdEdge1));
722 AliWarning(Form(
"Offline: %s", (patchSource ==
kTMOffline || patchSource ==
kTMRecalc) ?
"yes" :
"no"));
724 if(!(edge2[0] || edge2[1] || edge2[2])){
725 AliWarning(Form(
"Inconsistency in patch position for edge2: [%f|%f|%f]", edge2[0], edge2[1], edge2[2]));
726 AliWarning(
"Original vectors:");
727 AliWarning(Form(
"edge2: [%f|%f|%f]", edge2tmp[0], edge2tmp[1], edge2tmp[2]));
728 AliWarning(Form(
"vertex: [%f|%f|%f]", vertex[0], vertex[1], vertex[2]));
729 AliWarning(Form(
"Col: %d, Row: %d, FABSID: %d, Cell: %d", colEdge2, rowEdge2, absIdEdge2, cellIdEdge2));
730 AliWarning(Form(
"Offline: %s", (patchSource ==
kTMOffline || patchSource ==
kTMRecalc) ?
"yes" :
"no"));
781 AliEMCALTriggerPatchInfo *trigger =
782 new ((*fCaloTriggersOut)[
fITrigger]) AliEMCALTriggerPatchInfo();
785 trigger->SetCenterGeo(centerGeo, amp);
786 trigger->SetCenterMass(centerMass, amp);
787 trigger->SetEdge1(edge1, amp);
788 trigger->SetEdge2(edge2, amp);
789 trigger->SetADCAmp(adcAmp);
790 trigger->SetADCOfflineAmp(
Int_t(adcOfflineAmp));
791 trigger->SetTriggerBits(tBits);
792 trigger->SetOffSet(offSet);
793 trigger->SetCol0(globCol);
794 trigger->SetRowStart(globRow);
795 trigger->SetEdgeCell(globCol*2, globRow*2);
800 case kTMOnline: patchtype =
"Online";
break;
801 case kTMOffline: patchtype =
"Offline";
break;
802 case kTMRecalc: patchtype =
"Recalc";
break;
808 for(
unsigned int ibit = 0; ibit <
sizeof(tBits)*8; ibit++) {
809 if(tBits & (1 << ibit)){
830 TArrayI tBitsArray(4), rowArray(4), colArray(4);
863 Int_t maxPatchADC = -1;
870 int runnumber = InputEvent()->GetRunNumber();
871 if(runnumber > 139517 && runnumber <= 170593) maxRow = 60;
874 for (
Int_t i = 0; i <= (maxCol-16); i += 4) {
875 for (
Int_t j = 0; j <= (maxRow-16); j += 4) {
880 for (
Int_t k = 0; k < 16; ++k) {
881 for (
Int_t l = 0; l < 16; ++l) {
882 tSumOffline += (*fPatchADCSimple)(i+k,j+l);
883 tSum +=
static_cast<ULong64_t
>((*fPatchADC)(i+k,j+l));
887 if (tSum > maxPatchADC) {
893 if (tSumOffline > maxPatchADCoffline) {
894 maxPatchADCoffline = tSumOffline;
937 tBitsArray.Set( tBitsArray.GetSize() + 1 );
938 colArray.Set( colArray.GetSize() + 1 );
939 rowArray.Set( rowArray.GetSize() + 1 );
940 tBitsArray[tBitsArray.GetSize()-1] = tBits;
941 colArray[colArray.GetSize()-1] = i;
942 rowArray[rowArray.GetSize()-1] = j;
952 tBitsArray[0] = tBitsArray[0] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetJetLowBit() ));
960 tBitsArray[0] = tBitsArray[0] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetJetHighBit() ));
968 tBitsArray[1] = tBitsArray[1] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetJetLowBit() ));
976 tBitsArray[1] = tBitsArray[1] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetJetHighBit() ));
985 maxPatchADCoffline = -1;
987 for (
Int_t i = 0; i <= (maxCol-2); ++i) {
988 for (
Int_t j = 0; j <= (maxRow-2); ++j) {
994 for (
Int_t k = 0; k < 2; ++k) {
995 for (
Int_t l = 0; l < 2; ++l) {
996 tSumOffline += (*fPatchADCSimple)(i+k,j+l);
997 tSum +=
static_cast<ULong64_t
>((*fPatchADC)(i+k,j+l));
1001 if (tSum > maxPatchADC) {
1006 if (tSumOffline > maxPatchADCoffline) {
1007 maxPatchADCoffline = tSumOffline;
1048 tBitsArray.Set( tBitsArray.GetSize() + 1 );
1049 colArray.Set( colArray.GetSize() + 1 );
1050 rowArray.Set( rowArray.GetSize() + 1 );
1051 tBitsArray[tBitsArray.GetSize()-1] = tBits;
1052 colArray[colArray.GetSize()-1] = i;
1053 rowArray[rowArray.GetSize()-1] = j;
1063 tBitsArray[2] = tBitsArray[2] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetGammaLowBit() ));
1071 tBitsArray[2] = tBitsArray[2] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetGammaHighBit() ));
1079 tBitsArray[3] = tBitsArray[3] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetGammaLowBit() ));
1087 tBitsArray[3] = tBitsArray[3] | ( 1 << ( bitOffSet +
fTriggerBitConfig->GetGammaHighBit() ));
1094 if(tBitsArray.GetSize() - 4 > 0){
1096 for (
Int_t i = 4; i < tBitsArray.GetSize(); ++i){
1112 isOfflineSimple = kFALSE;
1114 if (!loopContinue) {
1116 isOfflineSimple = kTRUE;
1118 return loopContinue;
1128 Int_t row(-1), col(-1); trg.GetPosition(col, row);
1129 if(col < 0 || row < 0){
1130 AliError(Form(
"Patch outside range [col %d, row %d]", col, row));
1133 Int_t truref(-1), trumod(-1), absFastor(-1), adc(-1);
1134 fGeom->GetAbsFastORIndexFromPositionInEMCAL(col, row, absFastor);
1135 fGeom->GetTRUFromAbsFastORIndex(absFastor, truref, adc);
1137 const int kNRowsPhi =
fGeom->GetNTotalTRU() * 2;
1138 for(
int ipos = 0; ipos < 2; ipos++){
1139 if(row + ipos >= kNRowsPhi)
continue;
1140 for(
int jpos = 0; jpos < 2; jpos++){
1141 if(col + jpos >=
kColsEta)
continue;
1144 fGeom->GetAbsFastORIndexFromPositionInEMCAL(col+jpos, row+ipos, absFastor);
1145 fGeom->GetTRUFromAbsFastORIndex(absFastor, trumod, adc);
1146 if(trumod != truref)
continue;
1147 if(col + jpos >=
kColsEta) AliError(Form(
"Boundary error in col [%d, %d + %d]", col + jpos, col, jpos));
1148 if(row + ipos >= kNRowsPhi) AliError(Form(
"Boundary error in row [%d, %d + %d]", row + ipos, row, ipos));
1149 Char_t l0times = (*fLevel0TimeMap)(col + jpos,row + ipos);
1150 if(l0times > 7 && l0times < 10) nvalid++;
1153 if (nvalid != 4)
return false;
Bool_t fRejectOffAcceptancePatches
Switch for rejection of patches outside the acceptance.
Int_t GetThresholdJetHighSimple() const
Int_t GetThresholdGammaHighSimple() const
TString fCaloTriggersOutName
name of output track array
AliEMCALTriggerPatchInfo * ProcessPatch(TriggerMakerTriggerType_t type, TriggerMakerPatchSource_t patchSource)
Class to make array of trigger patch objects in AOD/ESD events.
Old configuration, no distinction between high and low threshold.
AliEMCALTriggerDataGrid< double > * fPatchADCSimple
! patch map for simple offline trigger
TriggerMakerBitConfig_t fUseTriggerBitConfig
type of trigger config
Base task in the EMCAL framework.
Bool_t fLocalInitialized
whether or not the task has been already initialized
TriggerMakerTriggerType_t
Definition of different trigger patch types.
Bool_t fDoQA
Fill QA histograms.
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
Fill a 2D histogram within the container.
Int_t fITrigger
! trigger counter
void UserCreateOutputObjects()
static const int kColsEta
Number of columns in eta direction.
Int_t GetThresholdGammaLowSimple() const
New configuration, distiction between high and low threshold.
static const TString fgkTriggerTypeNames[5]
Histogram name tags.
const AliEMCALTriggerBitConfig * fTriggerBitConfig
Trigger bit configuration, aliroot-dependent.
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
Create a new TH2 within the container.
Trigger bit indicating the main (highest energy) trigger patch of a given type per event...
AliEMCALTriggerDataGrid< float > * fPatchAmplitudes
! TRU Amplitudes (for L0)
THashList * GetListOfHistograms() const
Get the list of histograms.
Bool_t IsEGA(Int_t tBits) const
AliEMCALGeometry * fGeom
!emcal geometry
TString fCaloTriggersName
name of calo triggers collection
Bool_t IsOfflineSimple(Int_t tBits) const
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Create a new TH1 within the container.
Int_t fThresholdConstants[4][3]
simple offline trigger thresholds constants
Bool_t IsEJE(Int_t tBits) const
Int_t GetThresholdJetLowSimple() const
AliEMCALTriggerChannelContainer fBadChannels
Container of bad channels.
TString fCaloCellsName
name of calo cell collection
TString fV0InName
name of output track array
Bool_t IsRecalc(Int_t tBits) const
TriggerMakerPatchSource_t
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
Manager for constants used in the trigger maker.
AliEmcalTriggerSetupInfo * fCaloTriggerSetupOut
! trigger setup
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Int_t fDebugLevel
Debug lebel;.
AliVCaloCells * fCaloCells
!cells
AliVVZERO * fV0
! V0 object
AliAODCaloTrigger * fSimpleOfflineTriggers
! simple offline trigger
EMCAL trigger patch maker.
AliEmcalList * fOutput
!output list
TClonesArray * fCaloTriggersOut
! trigger array out
THistManager * fQAHistos
! Histograms for QA
Double_t fVertex[3]
!event vertex
Bitmask for recalc patches.
Container class for histograms.
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
Int_t GetRunNumber(TString)
AliVCaloTrigger * fCaloTriggers
!calo triggers
void UserCreateOutputObjects()
Main initialization function on the worker.
void RunSimpleOfflineTrigger()
AliEMCALTriggerDataGrid< char > * fLevel0TimeMap
! Map needed to store the level0 times
TString fCaloTriggerSetupOutName
name of output track array
Settings manager for the trigger patch algorithmThis class contains the main settings (trigger thresh...
void SetThresholdsSimple(Int_t i0, Int_t i1, Int_t i2, Int_t i3)
Bitmask for Offline simple patches.
Bool_t NextTrigger(Bool_t &isOfflineSimple)
virtual ~AliEmcalTriggerMaker()
void SetThresholds(Int_t i0, Int_t i1, Int_t i2, Int_t i3)
Bool_t CheckForL0(const AliVCaloTrigger &trg) const
AliEMCALTriggerDataGrid< int > * fPatchADC
! ADC values map