19 #include <TClonesArray.h>
21 #include <THashList.h>
24 #include <TParameter.h>
26 #include "AliAnalysisUtils.h"
27 #include "AliOADBContainer.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliEMCALTriggerMapping.h"
31 #include "AliEMCALTriggerPatchInfo.h"
33 #include "AliESDEvent.h"
34 #include "AliInputEventHandler.h"
36 #include "AliVCaloTrigger.h"
37 #include "AliVEvent.h"
43 namespace EMCalTriggerPtAnalysis {
45 AliAnalysisTaskEmcalPatchMasking::AliAnalysisTaskEmcalPatchMasking() :
51 fNameMaskedFastorOADB(
""),
65 fNameMaskedFastorOADB(
""),
84 std::vector<TString> patchtypes = {
"EG1",
"EG2",
"EJ1",
"EJ2",
"REGA",
"REJE"};
86 for(
const auto &pt : patchtypes){
87 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalAll%s", pt.Data()), Form(
"Contribution of max fastor to patch ADC for all %s patches", pt.Data()), 100, 0., 1.);
88 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanAll%s", pt.Data()), Form(
"Ratio max ADC to the mean for all %s patches", pt.Data()), 500, 0., 50.);
89 fHistos->
CreateTH2(Form(
"hPatchADCvsADCgoodAll%s", pt.Data()), Form(
"Patch ADC vs patch good ADC for all %s patches", pt.Data()), 500, 0., 2500., 500, 0., 2500.);
90 fHistos->
CreateTH1(Form(
"hFracMaxMaskedFastorAll%s", pt.Data()), Form(
"Contribution of the max masked fastor to the patch ADC for all %s patches", pt.Data()), 100, 0., 1.);
91 fHistos->
CreateTH1(Form(
"hFracMaxGoodFastorAll%s", pt.Data()), Form(
"Contribution of the max good fastor to the patch ADC for all %s patches", pt.Data()), 100, 0., 1.);
92 fHistos->
CreateTH1(Form(
"hFracGoodADCAll%s", pt.Data()), Form(
"Contribution of the good adc sum to the patch ADC for all %s patches", pt.Data()), 100, 0., 1.);
93 fHistos->
CreateTH1(Form(
"hFracMaskedADCAll%s", pt.Data()), Form(
"Contribution of the masked adc sum to the patch ADC for all %s patches", pt.Data()), 100, 0., 1.);
94 fHistos->
CreateTH2(Form(
"hFracMaxMaskedvsNmaskedcontribAll%s", pt.Data()), Form(
"Number of non-zero masked fastors vs. fraction of max. masked for all %s patches", pt.Data()), 1000, 0., 1000, 100., 0., 1.);
95 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalBad%s", pt.Data()), Form(
"Contribution of max fastor to patch ADC for bad %s patches", pt.Data()), 100, 0., 1.);
96 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanBad%s", pt.Data()), Form(
"Ratio max ADC to the mean for bad %s patches", pt.Data()), 500, 0., 50.);
97 fHistos->
CreateTH2(Form(
"hPatchADCvsADCgoodBad%s", pt.Data()), Form(
"Patch ADC vs patch good ADC for bad %s patches", pt.Data()), 500, 0., 2500., 500, 0., 2500.);
98 fHistos->
CreateTH1(Form(
"hFracMaxMaskedFastorBad%s", pt.Data()), Form(
"Contribution of the max masked fastor to the patch ADC for bad %s patches", pt.Data()), 100, 0., 1.);
99 fHistos->
CreateTH1(Form(
"hFracMaxGoodFastorBad%s", pt.Data()), Form(
"Contribution of the max good fastor to the patch ADC for bad %s patches", pt.Data()), 100, 0., 1.);
100 fHistos->
CreateTH1(Form(
"hFracGoodADCBad%s", pt.Data()), Form(
"Contribution of the good adc sum to the patch ADC for bad %s patches", pt.Data()), 100, 0., 1.);
101 fHistos->
CreateTH1(Form(
"hFracMaskedADCBad%s", pt.Data()), Form(
"Contribution of the masked adc sum to the patch ADC bad all %s patches", pt.Data()), 100, 0., 1.);
102 fHistos->
CreateTH2(Form(
"hFracMaxMaskedvsNmaskedcontribBad%s", pt.Data()), Form(
"Number of non-zero masked fastors vs. fraction of max. masked for bad %s patches", pt.Data()), 1000, 0., 1000, 100., 0., 1.);
103 fHistos->
CreateTH1(Form(
"hFracMaxMaskedSumMaskedBad%s", pt.Data()), Form(
"Contibution of the max. masked fastor to the ADC sum of masked fastors for bad %s patches", pt.Data()), 100, 0., 1.);
104 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalGood%s", pt.Data()), Form(
"Contribution of max fastor to patch ADC for good %s patches", pt.Data()), 100, 0., 1.);
105 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanGood%s", pt.Data()), Form(
"Ratio max ADC to the mean for good %s patches", pt.Data()), 500, 0., 10.);
108 std::vector<TString> maxtypes = {
"Online",
"Recalc"};
109 for(
const auto &mt : maxtypes){
110 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalAllMax%s", mt.Data()), Form(
"Contribution of max fastor to patch ADC for all max %s patches", mt.Data()), 100, 0., 1.);
111 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanAllMax%s", mt.Data()), Form(
"Ratio max ADC to the mean for all max %s patches", mt.Data()), 500, 0., 50.);
112 fHistos->
CreateTH2(Form(
"hPatchADCvsADCgoodAllMax%s", mt.Data()), Form(
"Patch ADC vs patch good ADC for all max %s patches", mt.Data()), 500, 0., 2500., 500, 0., 2500.);
113 fHistos->
CreateTH1(Form(
"hFracMaxMaskedFastorAllMax%s", mt.Data()), Form(
"Contribution of the max masked fastor to the patch ADC for all max %s patches", mt.Data()), 100, 0., 1.);
114 fHistos->
CreateTH1(Form(
"hFracMaxGoodFastorAllMax%s", mt.Data()), Form(
"Contribution of the max good fastor to the patch ADC for all max %s patches", mt.Data()), 100, 0., 1.);
115 fHistos->
CreateTH1(Form(
"hFracGoodADCAllMax%s", mt.Data()), Form(
"Contribution of the good adc sum to the patch ADC for all max %s patches", mt.Data()), 100, 0., 1.);
116 fHistos->
CreateTH1(Form(
"hFracMaskedADCAllMax%s", mt.Data()), Form(
"Contribution of the masked adc sum to the patch ADC for all max %s patches", mt.Data()), 100, 0., 1.);
117 fHistos->
CreateTH2(Form(
"hFracMaxMaskedvsNmaskedcontribAllMax%s", mt.Data()), Form(
"Number of non-zero masked fastors vs. fraction of max. masked for all max %s patches", mt.Data()), 1000, 0., 1000, 100., 0., 1.);
118 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalBadMax%s", mt.Data()), Form(
"Contribution of max fastor to patch ADC for bad max %s patches", mt.Data()), 100, 0., 1.);
119 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanBadMax%s", mt.Data()), Form(
"Ratio max ADC to the mean for bad max %s patches", mt.Data()), 500, 0., 50.);
120 fHistos->
CreateTH2(Form(
"hPatchADCvsADCgoodBadMax%s", mt.Data()), Form(
"Patch ADC vs patch good ADC for bad max %s patches", mt.Data()), 500, 0., 2500., 500, 0., 2500.);
121 fHistos->
CreateTH1(Form(
"hFracMaxMaskedFastorBadMax%s", mt.Data()), Form(
"Contribution of the max masked fastor to the patch ADC for bad max %s patches", mt.Data()), 100, 0., 1.);
122 fHistos->
CreateTH1(Form(
"hFracMaxGoodFastorBadMax%s", mt.Data()), Form(
"Contribution of the max good fastor to the patch ADC for bad max %s patches", mt.Data()), 100, 0., 1.);
123 fHistos->
CreateTH1(Form(
"hFracGoodADCBadMax%s", mt.Data()), Form(
"Contribution of the good adc sum to the patch ADC for bad max %s patches", mt.Data()), 100, 0., 1.);
124 fHistos->
CreateTH1(Form(
"hFracMaskedADCBadMax%s", mt.Data()), Form(
"Contribution of the masked adc sum to the patch ADC bad all max %s patches", mt.Data()), 100, 0., 1.);
125 fHistos->
CreateTH2(Form(
"hFracMaxMaskedvsNmaskedcontribBadMax%s", mt.Data()), Form(
"Number of non-zero masked fastors vs. fraction of max. masked for bad max %s patches", mt.Data()), 1000, 0., 1000, 100., 0., 1.);
126 fHistos->
CreateTH1(Form(
"hFracMaxMaskedSumMaskedBadMax%s", mt.Data()), Form(
"Contibution of the max. masked fastor to the ADC sum of masked fastors for bad max %s patches", mt.Data()), 100, 0., 1.);
127 fHistos->
CreateTH1(Form(
"hFracMaxFastorTotalGoodMax%s", mt.Data()), Form(
"Contribution of max fastor to patch ADC for good max %s patches", mt.Data()), 100, 0., 1.);
128 fHistos->
CreateTH1(Form(
"hFracMaxFastorMeanGoodMax%s", mt.Data()), Form(
"Ratio max ADC to the mean for good max %s patches", mt.Data()), 500, 0., 50.);
138 if(!fInputHandler->IsEventSelected() &
fTriggerBits)
return false;
141 if(!fInputEvent->GetFiredTriggerClasses().Contains(
fTriggerPattern))
return false;
145 if(fInputEvent->IsA() == AliESDEvent::Class() && !
fAliAnalysisUtils->IsFirstEventInChunk(fInputEvent))
return false;
150 AliDebugStream(1) << GetName() <<
": Event is selected" << std::endl;
159 AliEMCALTriggerPatchInfo *recpatch(
nullptr), *maxOnline(
nullptr), *maxRecalc(
nullptr);
161 recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
164 if(!(recpatch->IsGammaHigh() || recpatch->IsGammaLow() ||
165 recpatch->IsJetHigh() || recpatch->IsJetLow() ||
166 recpatch->IsGammaLowRecalc() || recpatch->IsJetLowRecalc()))
continue;
171 if(recpatch->IsJetLow() || recpatch->IsJetHigh() || recpatch->IsJetLowRecalc())
continue;
173 if(!(recpatch->IsGammaHigh() || recpatch->GetADCAmp() > 140))
continue;
174 if(recpatch->IsGammaHigh()){
175 if(!maxOnline) maxOnline = recpatch;
177 if(recpatch->GetADCAmp() > maxOnline->GetADCAmp()) maxOnline = recpatch;
180 if(recpatch->IsGammaLowRecalc()){
181 if(!maxRecalc) maxRecalc = recpatch;
183 if(recpatch->GetADCAmp() > maxRecalc->GetADCAmp()) maxRecalc = recpatch;
188 if(!(recpatch->IsGammaLow() || recpatch->GetADCAmp() > 89))
continue;
189 if(recpatch->IsGammaLow()){
190 if(!maxOnline) maxOnline = recpatch;
192 if(recpatch->GetADCAmp() > maxOnline->GetADCAmp()) maxOnline = recpatch;
195 if(recpatch->IsGammaLowRecalc()){
196 if(!maxRecalc) maxRecalc = recpatch;
198 if(recpatch->GetADCAmp() > maxRecalc->GetADCAmp()) maxRecalc = recpatch;
204 if(recpatch->IsGammaLow() || recpatch->IsGammaHigh() || recpatch->IsGammaLowRecalc())
continue;
206 if(!(recpatch->IsJetHigh() || recpatch->GetADCAmp() > 260))
continue;
207 if(recpatch->IsJetHigh()){
208 if(!maxOnline) maxOnline = recpatch;
210 if(recpatch->GetADCAmp() > maxOnline->GetADCAmp()) maxOnline = recpatch;
213 if(recpatch->IsJetLowRecalc()){
214 if(!maxRecalc) maxRecalc = recpatch;
216 if(recpatch->GetADCAmp() > maxRecalc->GetADCAmp()) maxRecalc = recpatch;
221 if(!(recpatch->IsJetLow() || recpatch->GetADCAmp() > 127))
continue;
222 if(recpatch->IsJetLow()){
223 if(!maxOnline) maxOnline = recpatch;
225 if(recpatch->GetADCAmp() > maxOnline->GetADCAmp()) maxOnline = recpatch;
228 if(recpatch->IsJetLowRecalc()){
229 if(!maxRecalc) maxRecalc = recpatch;
231 if(recpatch->GetADCAmp() > maxRecalc->GetADCAmp()) maxRecalc = recpatch;
237 AliDebugStream(2) << GetName() <<
": Found firing patch" << std::endl;
252 AliInfoStream() <<
"Initializing masked fastors from OADB container " <<
fNameMaskedFastorOADB.Data() << std::endl;
259 if(
fGeom->GetTriggerMappingVersion() == 2) nrow = 104;
260 fL1ADC.Allocate(48, nrow);
267 if(!badchannelmap || !badchannelmap->GetEntries())
return;
268 for(TIter citer = TIter(badchannelmap).Begin(); citer != TIter::End(); ++citer){
270 AliDebugStream(3) << GetName() <<
": Found masked fastor channel " << channelID->GetVal() << std::endl;
278 AliVCaloTrigger *emctrigger = fInputEvent->GetCaloTrigger(
"EMCAL");
281 Int_t globCol=-1, globRow=-1, adcAmp=-1;
282 while(emctrigger->Next()){
285 emctrigger->GetPosition(globCol, globRow);
286 emctrigger->GetL1TimeSum(adcAmp);
287 AliDebugStream(1) << GetName() <<
"Fastor at (" << globCol <<
"," << globRow <<
") with ADC " << adcAmp << std::endl;
288 if (adcAmp < 0) adcAmp = 0;
291 (
fL1ADC)(globCol,globRow) = adcAmp;
295 AliErrorStream() <<
"Trigger maker task - filling trigger bit grid - index out-of-bounds in " << dirstring <<
": " << e.GetIndex() << std::endl;
302 for(
unsigned char icol = 0; icol < patch.GetPatchSize(); icol++){
303 for(
unsigned char irow = 0; irow < patch.GetPatchSize(); irow++){
306 adc =
fL1ADC(icol + patch.GetColStart(), irow + patch.GetRowStart());
310 adcpatch->
SetADC(adc, icol, irow);
317 std::vector<TString> patchtypes;
318 if(patch.IsGammaHigh()) patchtypes.push_back(
"EG1");
319 if(patch.IsGammaLow()) patchtypes.push_back(
"EG2");
320 if(patch.IsGammaLowRecalc()) patchtypes.push_back(
"REGA");
321 if(patch.IsJetHigh()) patchtypes.push_back(
"EJ1");
322 if(patch.IsJetLow()) patchtypes.push_back(
"EJ2");
323 if(patch.IsJetLowRecalc()) patchtypes.push_back(
"REJE");
328 Int_t maxFastorADC = 0, maxFastorADCmasked = 0, maxFastorADCgood = 0, tmp = 0;
329 Int_t nFastorNonZero = 0, nfastorMasked = 0, nMaskedFastorsNonZero = 0;
330 Int_t sumADCgood = 0, sumADCbad = 0, absFastorIndex = 0;
331 std::vector<Int_t> adcs;
332 for(UChar_t icol = 0; icol < patchADC->GetPatchSize(); icol++){
333 for(UChar_t irow = 0; irow < patchADC->GetPatchSize(); irow++){
334 tmp = patchADC->GetADC(icol, irow);
336 if(tmp > 0) nFastorNonZero++;
337 if(tmp > maxFastorADC) maxFastorADC = tmp;
340 fGeom->GetTriggerMapping()->GetAbsFastORIndexFromPositionInEMCAL(icol + patch.GetColStart(), irow + patch.GetRowStart(), absFastorIndex);
344 if(tmp > 0) nMaskedFastorsNonZero++;
346 if(tmp > maxFastorADCmasked) maxFastorADCmasked = tmp;
350 if(tmp > maxFastorADCgood) maxFastorADCgood = tmp;
354 AliDebugStream(2) << GetName() <<
": Max Fastor: " << maxFastorADC <<
", Sum: " << patch.GetADCAmp() << std::endl;
355 AliDebugStream(2) << GetName() <<
": Mean ADC: " << TMath::Mean(adcs.begin(), adcs.end()) << std::endl;
356 AliDebugStream(2) << GetName() <<
": Sum good " << sumADCgood <<
", bad " << sumADCbad << std::endl;
358 Float_t fracMaxFastorPatchADC =
static_cast<Float_t>(maxFastorADC)/static_cast<Float_t>(patch.GetADCAmp()),
359 fracMaxFastorMaskedPatchADC = static_cast<Float_t>(maxFastorADCmasked)/
static_cast<Float_t>(patch.GetADCAmp()),
360 fracMaxFastorGoodPatchADC = static_cast<Float_t>(maxFastorADCgood)/
static_cast<Float_t>(patch.GetADCAmp()),
361 fracMaxFastorMeanADC = static_cast<Float_t>(maxFastorADC)/TMath::Mean(adcs.begin(), adcs.end()),
362 fracGoodADC = static_cast<Float_t>(sumADCgood)/
static_cast<Float_t>(patch.GetADCAmp()),
363 fracMaskedADC = static_cast<Float_t>(sumADCbad)/
static_cast<Float_t>(patch.GetADCAmp());
366 for(
const auto &pt : patchtypes){
367 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalAll%s", pt.Data()), fracMaxFastorPatchADC);
368 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanAll%s", pt.Data()), fracMaxFastorMeanADC);
369 fHistos->
FillTH2(Form(
"hPatchADCvsADCgoodAll%s", pt.Data()), patch.GetADCAmp(), sumADCgood);
370 fHistos->
FillTH1(Form(
"hFracMaxMaskedFastorAll%s", pt.Data()), fracMaxFastorMaskedPatchADC);
371 fHistos->
FillTH1(Form(
"hFracMaxGoodFastorAll%s", pt.Data()), fracMaxFastorGoodPatchADC);
372 fHistos->
FillTH1(Form(
"hFracGoodADCAll%s", pt.Data()), fracGoodADC);
373 fHistos->
FillTH1(Form(
"hFracMaskedADCAll%s", pt.Data()), fracMaskedADC);
374 fHistos->
FillTH2(Form(
"hFracMaxMaskedvsNmaskedcontribAll%s", pt.Data()), nMaskedFastorsNonZero, fracMaxFastorMaskedPatchADC);
377 Float_t fracMaxMaskedSumMasked = 0;
378 if(sumADCbad) fracMaxMaskedSumMasked =
static_cast<Float_t>(maxFastorADCmasked)/static_cast<Float_t>(sumADCbad);
379 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalBad%s", pt.Data()), fracMaxFastorPatchADC);
380 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanBad%s", pt.Data()), fracMaxFastorMeanADC);
381 fHistos->
FillTH2(Form(
"hPatchADCvsADCgoodBad%s", pt.Data()), patch.GetADCAmp(), sumADCgood);
382 fHistos->
FillTH1(Form(
"hFracMaxMaskedFastorBad%s", pt.Data()), fracMaxFastorMaskedPatchADC);
383 fHistos->
FillTH1(Form(
"hFracMaxGoodFastorBad%s", pt.Data()), fracMaxFastorGoodPatchADC);
384 fHistos->
FillTH1(Form(
"hFracGoodADCBad%s", pt.Data()), fracGoodADC);
385 fHistos->
FillTH1(Form(
"hFracMaskedADCBad%s", pt.Data()), fracMaskedADC);
386 fHistos->
FillTH2(Form(
"hFracMaxMaskedvsNmaskedcontribBad%s", pt.Data()), nMaskedFastorsNonZero, fracMaxFastorMaskedPatchADC);
387 fHistos->
FillTH1(Form(
"hFracMaxMaskedSumMaskedBad%s", pt.Data()), fracMaxMaskedSumMasked);
390 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalGood%s", pt.Data()), fracMaxFastorPatchADC);
391 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanGood%s", pt.Data()), fracMaxFastorMeanADC);
400 UShort_t maxFastorADC = 0, maxFastorADCmasked = 0, maxFastorADCgood = 0, tmp = 0;
401 UShort_t nFastorNonZero = 0, nfastorMasked = 0, nMaskedFastorsNonZero = 0;
402 Int_t sumADCgood = 0, sumADCbad = 0, absFastorIndex = 0;
403 std::vector<UShort_t> adcs;
404 for(UChar_t icol = 0; icol < patchADC->GetPatchSize(); icol++){
405 for(UChar_t irow = 0; irow < patchADC->GetPatchSize(); irow++){
406 tmp = patchADC->GetADC(icol, irow);
408 if(tmp > 0) nFastorNonZero++;
409 if(tmp > maxFastorADC) maxFastorADC = tmp;
412 fGeom->GetTriggerMapping()->GetAbsFastORIndexFromPositionInEMCAL(icol + patch.GetColStart(), irow + patch.GetRowStart(), absFastorIndex);
416 if(tmp > 0) nMaskedFastorsNonZero++;
418 if(tmp > maxFastorADCmasked) maxFastorADCmasked = tmp;
422 if(tmp > maxFastorADCgood) maxFastorADCgood = tmp;
426 Float_t fracMaxFastorPatchADC =
static_cast<Float_t>(maxFastorADC)/static_cast<Float_t>(patch.GetADCAmp()),
427 fracMaxFastorMaskedPatchADC = static_cast<Float_t>(maxFastorADCmasked)/
static_cast<Float_t>(patch.GetADCAmp()),
428 fracMaxFastorGoodPatchADC = static_cast<Float_t>(maxFastorADCgood)/
static_cast<Float_t>(patch.GetADCAmp()),
429 fracMaxFastorMeanADC = static_cast<Float_t>(maxFastorADC)/TMath::Mean(adcs.begin(), adcs.end()),
430 fracGoodADC = static_cast<Float_t>(sumADCgood)/
static_cast<Float_t>(patch.GetADCAmp()),
431 fracMaskedADC = static_cast<Float_t>(sumADCbad)/
static_cast<Float_t>(patch.GetADCAmp());
433 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalAllMax%s", patchtype.Data()), fracMaxFastorPatchADC);
434 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanAllMax%s", patchtype.Data()), fracMaxFastorMeanADC);
435 fHistos->
FillTH2(Form(
"hPatchADCvsADCgoodAllMax%s", patchtype.Data()), patch.GetADCAmp(), sumADCgood);
436 fHistos->
FillTH1(Form(
"hFracMaxMaskedFastorAllMax%s", patchtype.Data()), fracMaxFastorMaskedPatchADC);
437 fHistos->
FillTH1(Form(
"hFracMaxGoodFastorAllMax%s", patchtype.Data()), fracMaxFastorGoodPatchADC);
438 fHistos->
FillTH1(Form(
"hFracGoodADCAllMax%s", patchtype.Data()), fracGoodADC);
439 fHistos->
FillTH1(Form(
"hFracMaskedADCAllMax%s", patchtype.Data()), fracMaskedADC);
440 fHistos->
FillTH2(Form(
"hFracMaxMaskedvsNmaskedcontribAllMax%s", patchtype.Data()), nMaskedFastorsNonZero, fracMaxFastorMaskedPatchADC);
443 Float_t fracMaxMaskedSumMasked = 0;
444 if(sumADCbad) fracMaxMaskedSumMasked =
static_cast<Float_t>(maxFastorADCmasked)/static_cast<Float_t>(sumADCbad);
445 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalBadMax%s", patchtype.Data()), fracMaxFastorPatchADC);
446 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanBadMax%s", patchtype.Data()), fracMaxFastorMeanADC);
447 fHistos->
FillTH2(Form(
"hPatchADCvsADCgoodBadMax%s", patchtype.Data()), patch.GetADCAmp(), sumADCgood);
448 fHistos->
FillTH1(Form(
"hFracMaxMaskedFastorBadMax%s", patchtype.Data()), fracMaxFastorMaskedPatchADC);
449 fHistos->
FillTH1(Form(
"hFracMaxGoodFastorBadMax%s", patchtype.Data()), fracMaxFastorGoodPatchADC);
450 fHistos->
FillTH1(Form(
"hFracGoodADCBadMax%s", patchtype.Data()), fracGoodADC);
451 fHistos->
FillTH1(Form(
"hFracMaskedADCBadMax%s", patchtype.Data()), fracMaskedADC);
452 fHistos->
FillTH2(Form(
"hFracMaxMaskedvsNmaskedcontribBadMax%s", patchtype.Data()), nMaskedFastorsNonZero, fracMaxFastorMaskedPatchADC);
453 fHistos->
FillTH1(Form(
"hFracMaxMaskedSumMaskedBadMax%s", patchtype.Data()), fracMaxMaskedSumMasked);
456 fHistos->
FillTH1(Form(
"hFracMaxFastorTotalGoodMax%s", patchtype.Data()), fracMaxFastorPatchADC);
457 fHistos->
FillTH1(Form(
"hFracMaxFastorMeanGoodMax%s", patchtype.Data()), fracMaxFastorMeanADC);
TString fNameMaskedFastorOADB
Name of the masked fastor OADB container.
Base task in the EMCAL framework.
Bool_t fLocalInitialized
whether or not the task has been already initialized
TString fTriggerPattern
Trigger pattern.
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
void SetADC(Int_t adc, UChar_t col, UChar_t row)
virtual void RunChanged(int newrun)
std::vector< UShort_t > fListMaskedFastors
List of masked fastors.
virtual bool IsEventSelected()
void SetCaloTriggerPatchInfoName(const char *n)
void ProcessPatch(const AliEMCALTriggerPatchInfo &patch)
ULong_t fTriggerBits
Trigger bit selection.
Investigation of observables related to masked fastors within trigger patches.
virtual void UserCreateOutputObjects()
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
AliEMCALTriggerPatchADCInfoAP * MakeFastorADCValuesForPatch(const AliEMCALTriggerPatchInfo &patch) const
THashList * GetListOfHistograms() const
AliEMCALGeometry * fGeom
!emcal geometry
void ProcessMaxPatch(const AliEMCALTriggerPatchInfo &patch, const TString &maxtype)
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
AliAnalysisUtils * fAliAnalysisUtils
!vertex selection (optional)
void PrepareL1FastorADC()
virtual ~AliAnalysisTaskEmcalPatchMasking()
AliEMCALTriggerDataGrid< Int_t > fL1ADC
L1 ADC values.
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
AliOADBContainer * fMaskedFastorOADB
! OADB container of the masked fastors
THistManager * fHistos
! Histogram manager
AliEmcalList * fOutput
!output list
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
TClonesArray * fTriggerPatchInfo
!trigger patch info array
void SetNeedEmcalGeom(Bool_t n)
Container class for histograms.
void UserCreateOutputObjects()
AliAnalysisTaskEmcalPatchMasking()