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" 45 AliAnalysisTaskEmcalPatchMasking::AliAnalysisTaskEmcalPatchMasking() :
51 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="")
Fill a 2D histogram within the container.
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()
Performing event selection.
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="")
Create a new TH2 within the container.
AliEMCALTriggerPatchADCInfoAP * MakeFastorADCValuesForPatch(const AliEMCALTriggerPatchInfo &patch) const
THashList * GetListOfHistograms() const
Get the list of histograms.
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="")
Create a new TH1 within the container.
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="")
Fill a 1D histogram within the container.
AliOADBContainer * fMaskedFastorOADB
! OADB container of the masked fastors
THistManager * fHistos
! Histogram manager
AliEmcalList * fOutput
!output list
Analysis of high- tracks in triggered events.
TClonesArray * fTriggerPatchInfo
!trigger patch info array
void SetNeedEmcalGeom(Bool_t n)
Container class for histograms.
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
void UserCreateOutputObjects()
Main initialization function on the worker.
virtual bool Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
AliAnalysisTaskEmcalPatchMasking()