1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /* $Id: AliUEHistograms.cxx 20164 2007-08-14 15:31:50Z morsch $ */
20 // encapsulates several AliUEHist objects for a full UE analysis plus additional control histograms
23 // Author: Jan Fiete Grosse-Oetringhaus, Sara Vallero
25 #include "AliUEHistograms.h"
27 #include "AliCFContainer.h"
28 #include "AliVParticle.h"
29 #include "AliAODTrack.h"
37 ClassImp(AliUEHistograms)
39 const Int_t AliUEHistograms::fgkUEHists = 3;
41 AliUEHistograms::AliUEHistograms(const char* name, const char* histograms) :
50 fCorrelationLeading2Phi(0),
51 fCorrelationMultiplicity(0),
53 fEventCountDifferential(0),
54 fVertexContributors(0),
55 fCentralityDistribution(0),
62 // the string histograms defines which histograms are created:
63 // 1 = NumberDensitypT
65 // 3 = NumberDensityPhi
66 // 4 = NumberDensityPhiCentrality (other multiplicity for Pb)
68 TString histogramsStr(histograms);
70 if (histogramsStr.Contains("1"))
71 fNumberDensitypT = new AliUEHist("NumberDensitypT");
72 if (histogramsStr.Contains("2"))
73 fSumpT = new AliUEHist("SumpT");
75 if (histogramsStr.Contains("3"))
76 fNumberDensityPhi = new AliUEHist("NumberDensityPhi");
77 else if (histogramsStr.Contains("4"))
78 fNumberDensityPhi = new AliUEHist("NumberDensityPhiCentrality");
80 // do not add this hists to the directory
81 Bool_t oldStatus = TH1::AddDirectoryStatus();
82 TH1::AddDirectory(kFALSE);
84 if (!histogramsStr.Contains("4"))
86 fCorrelationpT = new TH2F("fCorrelationpT", ";p_{T,lead} (MC);p_{T,lead} (RECO)", 200, 0, 50, 200, 0, 50);
87 fCorrelationEta = new TH2F("fCorrelationEta", ";#eta_{lead} (MC);#eta_{T,lead} (RECO)", 200, -1, 1, 200, -1, 1);
88 fCorrelationPhi = new TH2F("fCorrelationPhi", ";#phi_{lead} (MC);#phi_{T,lead} (RECO)", 200, 0, TMath::TwoPi(), 200, 0, TMath::TwoPi());
92 fCorrelationpT = new TH2F("fCorrelationpT", ";Centrality;p_{T} (RECO)", 100, 0, 100.001, 200, 0, 50);
93 fCorrelationEta = new TH2F("fCorrelationEta", ";Centrality;#eta (RECO)", 100, 0, 100.001, 200, -1, 1);
94 fCorrelationPhi = new TH2F("fCorrelationPhi", ";Centrality;#phi (RECO)", 100, 0, 100.001, 200, 0, TMath::TwoPi());
97 fCorrelationR = new TH2F("fCorrelationR", ";R;p_{T,lead} (MC)", 200, 0, 2, 200, 0, 50);
98 fCorrelationLeading2Phi = new TH2F("fCorrelationLeading2Phi", ";#Delta #phi;p_{T,lead} (MC)", 200, -TMath::Pi(), TMath::Pi(), 200, 0, 50);
99 fCorrelationMultiplicity = new TH2F("fCorrelationMultiplicity", ";MC tracks;Reco tracks", 100, -0.5, 99.5, 100, -0.5, 99.5);
101 if (!histogramsStr.Contains("4"))
103 fEventCount = new TH2F("fEventCount", ";step;event type;count", AliUEHist::fgkCFSteps+2, -2.5, -0.5 + AliUEHist::fgkCFSteps, 3, -0.5, 2.5);
104 fEventCount->GetYaxis()->SetBinLabel(1, "ND");
105 fEventCount->GetYaxis()->SetBinLabel(2, "SD");
106 fEventCount->GetYaxis()->SetBinLabel(3, "DD");
110 fEventCount = new TH2F("fEventCount", ";step;centrality;count", AliUEHist::fgkCFSteps+2, -2.5, -0.5 + AliUEHist::fgkCFSteps, fNumberDensityPhi->GetEventHist()->GetNBins(1), fNumberDensityPhi->GetEventHist()->GetAxis(1, 0)->GetXbins()->GetArray());
113 fEventCountDifferential = new TH3F("fEventCountDifferential", ";p_{T,lead};step;event type", 100, 0, 50, AliUEHist::fgkCFSteps, -0.5, -0.5 + AliUEHist::fgkCFSteps, 3, -0.5, 2.5);
114 fEventCountDifferential->GetZaxis()->SetBinLabel(1, "ND");
115 fEventCountDifferential->GetZaxis()->SetBinLabel(2, "SD");
116 fEventCountDifferential->GetZaxis()->SetBinLabel(3, "DD");
118 fVertexContributors = new TH1F("fVertexContributors", ";contributors;count", 100, -0.5, 99.5);
120 if (fNumberDensityPhi)
121 fCentralityDistribution = new TH1F("fCentralityDistribution", ";;count", fNumberDensityPhi->GetEventHist()->GetNBins(1), fNumberDensityPhi->GetEventHist()->GetAxis(1, 0)->GetXbins()->GetArray());
123 fITSClusterMap = new TH3F("fITSClusterMap", "; its cluster map; centrality; pT", 256, -0.5, 255.5, 20, 0, 100.001, 100, 0, 20);
125 TH1::AddDirectory(oldStatus);
128 //_____________________________________________________________________________
129 AliUEHistograms::AliUEHistograms(const AliUEHistograms &c) :
130 TNamed(fName, fTitle),
133 fNumberDensityPhi(0),
138 fCorrelationLeading2Phi(0),
139 fCorrelationMultiplicity(0),
141 fEventCountDifferential(0),
142 fVertexContributors(0),
143 fCentralityDistribution(0),
149 // AliUEHistograms copy constructor
152 ((AliUEHistograms &) c).Copy(*this);
155 //____________________________________________________________________
156 AliUEHistograms::~AliUEHistograms()
160 if (fNumberDensitypT)
162 delete fNumberDensitypT;
163 fNumberDensitypT = 0;
172 if (fNumberDensityPhi)
174 delete fNumberDensityPhi;
175 fNumberDensityPhi = 0;
180 delete fCorrelationpT;
186 delete fCorrelationEta;
192 delete fCorrelationPhi;
198 delete fCorrelationR;
202 if (fCorrelationLeading2Phi)
204 delete fCorrelationLeading2Phi;
205 fCorrelationLeading2Phi = 0;
208 if (fCorrelationMultiplicity)
210 delete fCorrelationMultiplicity;
211 fCorrelationMultiplicity = 0;
220 if (fEventCountDifferential)
222 delete fEventCountDifferential;
223 fEventCountDifferential = 0;
226 if (fVertexContributors)
228 delete fVertexContributors;
229 fVertexContributors = 0;
232 if (fCentralityDistribution)
234 delete fCentralityDistribution;
235 fCentralityDistribution = 0;
240 delete fITSClusterMap;
245 AliUEHist* AliUEHistograms::GetUEHist(Int_t id)
247 // returns AliUEHist object, useful for loops
251 case 0: return fNumberDensitypT; break;
252 case 1: return fSumpT; break;
253 case 2: return fNumberDensityPhi; break;
259 //____________________________________________________________________
260 Int_t AliUEHistograms::CountParticles(TList* list, Float_t ptMin)
262 // counts the number of particles in the list with a pT above ptMin
263 // TODO eta cut needed here?
266 for (Int_t j=0; j<list->GetEntries(); j++)
267 if (((AliVParticle*) list->At(j))->Pt() > ptMin)
273 //____________________________________________________________________
274 void AliUEHistograms::Fill(Int_t eventType, Float_t zVtx, AliUEHist::CFStep step, AliVParticle* leading, TList* toward, TList* away, TList* min, TList* max)
276 // fills the UE event histograms
278 // this function needs the leading (track or jet or ...) and four lists of AliVParticles which contain the particles/tracks to be filled in the four regions
280 // if leading is not set, just fill event statistics
283 Int_t multiplicity = 0;
285 // TODO configurable?
286 Float_t ptMin = 0.15;
287 if (leading->Pt() > ptMin)
290 multiplicity += CountParticles(toward, ptMin);
291 multiplicity += CountParticles(away, ptMin);
292 multiplicity += CountParticles(min, ptMin);
293 multiplicity += CountParticles(max, ptMin);
295 FillRegion(AliUEHist::kToward, zVtx, step, leading, toward, multiplicity);
296 FillRegion(AliUEHist::kAway, zVtx, step, leading, away, multiplicity);
297 FillRegion(AliUEHist::kMin, zVtx, step, leading, min, multiplicity);
298 FillRegion(AliUEHist::kMax, zVtx, step, leading, max, multiplicity);
301 vars[0] = leading->Pt();
302 vars[1] = multiplicity;
304 for (Int_t i=0; i<fgkUEHists; i++)
306 GetUEHist(i)->GetEventHist()->Fill(vars, step);
308 fEventCountDifferential->Fill(leading->Pt(), step, eventType);
311 FillEvent(eventType, step);
314 //____________________________________________________________________
315 void AliUEHistograms::FillRegion(AliUEHist::Region region, Float_t zVtx, AliUEHist::CFStep step, AliVParticle* leading, TList* list, Int_t multiplicity)
317 // loops over AliVParticles in list and fills the given region at the given step
319 // See also Fill(...)
321 for (Int_t i=0; i<list->GetEntries(); i++)
323 AliVParticle* particle = (AliVParticle*) list->At(i);
326 vars[0] = particle->Eta();
327 vars[1] = particle->Pt();
328 vars[2] = leading->Pt();
329 vars[3] = multiplicity;
330 vars[4] = leading->Phi() - particle->Phi();
331 if (vars[4] > 1.5 * TMath::Pi())
332 vars[4] -= TMath::TwoPi();
333 if (vars[4] < -0.5 * TMath::Pi())
334 vars[4] += TMath::TwoPi();
337 if (fNumberDensitypT)
338 fNumberDensitypT->GetTrackHist(region)->Fill(vars, step);
341 fSumpT->GetTrackHist(region)->Fill(vars, step, particle->Pt());
343 // fill all in toward region (is anyway as function of delta phi!)
344 if (fNumberDensityPhi)
345 fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step);
349 //____________________________________________________________________
350 void AliUEHistograms::Fill(AliVParticle* leadingMC, AliVParticle* leadingReco)
352 // fills the correlation histograms
356 fCorrelationpT->Fill(leadingMC->Pt(), leadingReco->Pt());
357 if (leadingMC->Pt() > 0.5)
359 fCorrelationEta->Fill(leadingMC->Eta(), leadingReco->Eta());
360 fCorrelationPhi->Fill(leadingMC->Phi(), leadingReco->Phi());
363 Float_t phiDiff = leadingMC->Phi() - leadingReco->Phi();
364 if (phiDiff > TMath::Pi())
365 phiDiff -= TMath::TwoPi();
366 if (phiDiff < -TMath::Pi())
367 phiDiff += TMath::TwoPi();
369 Float_t etaDiff = leadingMC->Eta() - leadingReco->Eta();
371 fCorrelationR->Fill(TMath::Sqrt(phiDiff * phiDiff + etaDiff * etaDiff), leadingMC->Pt());
372 fCorrelationLeading2Phi->Fill(phiDiff, leadingMC->Pt());
376 fCorrelationpT->Fill(1.0, leadingReco->Pt());
377 if (leadingReco->Pt() > 0.5)
379 fCorrelationEta->Fill(0.0, leadingReco->Eta());
380 fCorrelationPhi->Fill(0.0, leadingReco->Phi());
385 //____________________________________________________________________
386 void AliUEHistograms::FillCorrelations(Double_t centrality, Float_t zVtx, AliUEHist::CFStep step, TObjArray* particles, TObjArray* mixed, Float_t weight, Bool_t firstTime)
388 // fills the fNumberDensityPhi histogram
390 // this function need a list of AliVParticles which contain the particles/tracks to be filled
392 // if mixed is non-0, mixed events are filled, the trigger particle is from particles, the associated from mixed
394 // Eta() is extremely time consuming, therefore cache it for the inner loop here:
395 TObjArray* input = (mixed) ? mixed : particles;
396 TArrayF eta(input->GetEntriesFast());
397 for (Int_t i=0; i<input->GetEntriesFast(); i++)
398 eta[i] = ((AliVParticle*) input->At(i))->Eta();
400 // if particles is not set, just fill event statistics
403 Int_t jMax = particles->GetEntriesFast();
405 jMax = mixed->GetEntriesFast();
407 for (Int_t i=0; i<particles->GetEntriesFast(); i++)
409 AliVParticle* triggerParticle = (AliVParticle*) particles->At(i);
412 Float_t triggerEta = triggerParticle->Eta();
417 fCorrelationpT->Fill(centrality, triggerParticle->Pt());
418 fCorrelationEta->Fill(centrality, triggerEta);
419 fCorrelationPhi->Fill(centrality, triggerParticle->Phi());
420 /* if (dynamic_cast<AliAODTrack*>(triggerParticle))
421 fITSClusterMap->Fill(((AliAODTrack*) triggerParticle)->GetITSClusterMap(), centrality, triggerParticle->Pt());*/
424 for (Int_t j=0; j<jMax; j++)
426 if (!mixed && i == j)
429 AliVParticle* particle = 0;
431 particle = (AliVParticle*) particles->At(j);
433 particle = (AliVParticle*) mixed->At(j);
435 // check if both particles point to the same element (does not occur for mixed events, but if subsets are mixed within the same event for cross-checks)
436 if (mixed && triggerParticle == particle)
439 if (particle->Pt() > triggerParticle->Pt())
442 if (fSelectCharge > 0)
445 if (fSelectCharge == 1 && particle->Charge() * triggerParticle->Charge() > 0)
449 if (fSelectCharge == 2 && particle->Charge() * triggerParticle->Charge() < 0)
454 vars[0] = triggerEta - eta[j];
455 vars[1] = particle->Pt();
456 vars[2] = triggerParticle->Pt();
457 vars[3] = centrality;
458 vars[4] = triggerParticle->Phi() - particle->Phi();
459 if (vars[4] > 1.5 * TMath::Pi())
460 vars[4] -= TMath::TwoPi();
461 if (vars[4] < -0.5 * TMath::Pi())
462 vars[4] += TMath::TwoPi();
465 // fill all in toward region and do not use the other regions
466 fNumberDensityPhi->GetTrackHist(AliUEHist::kToward)->Fill(vars, step, weight);
471 // once per trigger particle
473 vars[0] = triggerParticle->Pt();
474 vars[1] = centrality;
476 fNumberDensityPhi->GetEventHist()->Fill(vars, step);
481 fCentralityDistribution->Fill(centrality);
482 FillEvent(centrality, step);
485 //____________________________________________________________________
486 void AliUEHistograms::FillTrackingEfficiency(TObjArray* mc, TObjArray* recoPrim, TObjArray* recoAll, Int_t particleType, Double_t centrality)
488 // fills the tracking efficiency objects
490 // mc: all primary MC particles
491 // recoPrim: reconstructed primaries (again MC particles)
492 // recoAll: reconstructed (again MC particles)
493 // particleType is: 0 for pion, 1 for kaon, 2 for proton, 3 for others
495 for (Int_t step=0; step<3; step++)
497 TObjArray* list = mc;
503 for (Int_t i=0; i<list->GetEntriesFast(); i++)
505 AliVParticle* particle = (AliVParticle*) list->At(i);
507 vars[0] = particle->Eta();
508 vars[1] = particle->Pt();
509 vars[2] = particleType;
510 vars[3] = centrality;
512 for (Int_t j=0; j<fgkUEHists; j++)
514 GetUEHist(j)->GetTrackHistEfficiency()->Fill(vars, step);
519 //____________________________________________________________________
520 void AliUEHistograms::FillEvent(Int_t eventType, Int_t step)
522 // fills the number of events at the given step and the given enty type
524 // WARNING: This function is called from Fill, so only call it for steps where Fill is not called
526 fEventCount->Fill(step, eventType);
529 //____________________________________________________________________
530 void AliUEHistograms::FillEvent(Double_t centrality, Int_t step)
532 // fills the number of events at the given step and the given centrality
534 // WARNING: This function is called from Fill, so only call it for steps where Fill is not called
536 fEventCount->Fill(step, centrality);
539 //____________________________________________________________________
540 void AliUEHistograms::SetEtaRange(Float_t etaMin, Float_t etaMax)
542 // sets eta min and max for all contained AliUEHist classes
544 for (Int_t i=0; i<fgkUEHists; i++)
546 GetUEHist(i)->SetEtaRange(etaMin, etaMax);
549 //____________________________________________________________________
550 void AliUEHistograms::SetPtRange(Float_t ptMin, Float_t ptMax)
552 // sets pT min and max for all contained AliUEHist classes
554 for (Int_t i=0; i<fgkUEHists; i++)
556 GetUEHist(i)->SetPtRange(ptMin, ptMax);
559 //____________________________________________________________________
560 void AliUEHistograms::SetZVtxRange(Float_t min, Float_t max)
562 // sets pT min and max for all contained AliUEHist classes
564 for (Int_t i=0; i<fgkUEHists; i++)
566 GetUEHist(i)->SetZVtxRange(min, max);
569 //____________________________________________________________________
570 void AliUEHistograms::SetContaminationEnhancement(TH1F* hist)
572 // sets the contamination enhancement histogram in all contained AliUEHist classes
574 for (Int_t i=0; i<fgkUEHists; i++)
576 GetUEHist(i)->SetContaminationEnhancement(hist);
579 //____________________________________________________________________
580 void AliUEHistograms::SetCombineMinMax(Bool_t flag)
582 // sets pT min and max for all contained AliUEHist classes
584 for (Int_t i=0; i<fgkUEHists; i++)
586 GetUEHist(i)->SetCombineMinMax(flag);
589 //____________________________________________________________________
590 void AliUEHistograms::Correct(AliUEHistograms* corrections)
592 // corrects the contained histograms by calling AliUEHist::Correct
594 for (Int_t i=0; i<fgkUEHists; i++)
596 GetUEHist(i)->Correct(corrections->GetUEHist(i));
599 //____________________________________________________________________
600 AliUEHistograms &AliUEHistograms::operator=(const AliUEHistograms &c)
602 // assigment operator
605 ((AliUEHistograms &) c).Copy(*this);
610 //____________________________________________________________________
611 void AliUEHistograms::Copy(TObject& c) const
615 AliUEHistograms& target = (AliUEHistograms &) c;
617 if (fNumberDensitypT)
618 target.fNumberDensitypT = dynamic_cast<AliUEHist*> (fNumberDensitypT->Clone());
621 target.fSumpT = dynamic_cast<AliUEHist*> (fSumpT->Clone());
623 if (fNumberDensityPhi)
624 target.fNumberDensityPhi = dynamic_cast<AliUEHist*> (fNumberDensityPhi->Clone());
627 target.fCorrelationpT = dynamic_cast<TH2F*> (fCorrelationpT->Clone());
630 target.fCorrelationEta = dynamic_cast<TH2F*> (fCorrelationEta->Clone());
633 target.fCorrelationPhi = dynamic_cast<TH2F*> (fCorrelationPhi->Clone());
636 target.fCorrelationR = dynamic_cast<TH2F*> (fCorrelationR->Clone());
638 if (fCorrelationLeading2Phi)
639 target.fCorrelationLeading2Phi = dynamic_cast<TH2F*> (fCorrelationLeading2Phi->Clone());
641 if (fCorrelationMultiplicity)
642 target.fCorrelationMultiplicity = dynamic_cast<TH2F*> (fCorrelationMultiplicity->Clone());
645 target.fEventCount = dynamic_cast<TH2F*> (fEventCount->Clone());
647 if (fEventCountDifferential)
648 target.fEventCountDifferential = dynamic_cast<TH3F*> (fEventCountDifferential->Clone());
650 if (fVertexContributors)
651 target.fVertexContributors = dynamic_cast<TH1F*> (fVertexContributors->Clone());
653 if (fCentralityDistribution)
654 target.fCentralityDistribution = dynamic_cast<TH1F*> (fCentralityDistribution->Clone());
657 target.fITSClusterMap = dynamic_cast<TH3F*> (fITSClusterMap->Clone());
659 target.fSelectCharge = fSelectCharge;
660 target.fRunNumber = fRunNumber;
663 //____________________________________________________________________
664 Long64_t AliUEHistograms::Merge(TCollection* list)
666 // Merge a list of AliUEHistograms objects with this (needed for
668 // Returns the number of merged objects (including this).
676 TIterator* iter = list->MakeIterator();
679 // collections of objects
680 const Int_t kMaxLists = 14;
681 TList* lists[kMaxLists];
683 for (Int_t i=0; i<kMaxLists; i++)
684 lists[i] = new TList;
687 while ((obj = iter->Next())) {
689 AliUEHistograms* entry = dynamic_cast<AliUEHistograms*> (obj);
693 if (entry->fNumberDensitypT)
694 lists[0]->Add(entry->fNumberDensitypT);
696 lists[1]->Add(entry->fSumpT);
697 if (entry->fNumberDensityPhi)
698 lists[2]->Add(entry->fNumberDensityPhi);
699 lists[3]->Add(entry->fCorrelationpT);
700 lists[4]->Add(entry->fCorrelationEta);
701 lists[5]->Add(entry->fCorrelationPhi);
702 lists[6]->Add(entry->fCorrelationR);
703 lists[7]->Add(entry->fCorrelationLeading2Phi);
704 lists[8]->Add(entry->fCorrelationMultiplicity);
705 lists[9]->Add(entry->fEventCount);
706 lists[10]->Add(entry->fEventCountDifferential);
707 lists[11]->Add(entry->fVertexContributors);
708 lists[12]->Add(entry->fCentralityDistribution);
709 lists[13]->Add(entry->fITSClusterMap);
714 if (fNumberDensitypT)
715 fNumberDensitypT->Merge(lists[0]);
717 fSumpT->Merge(lists[1]);
718 if (fNumberDensityPhi)
719 fNumberDensityPhi->Merge(lists[2]);
720 fCorrelationpT->Merge(lists[3]);
721 fCorrelationEta->Merge(lists[4]);
722 fCorrelationPhi->Merge(lists[5]);
723 fCorrelationR->Merge(lists[6]);
724 fCorrelationLeading2Phi->Merge(lists[7]);
725 fCorrelationMultiplicity->Merge(lists[8]);
726 fEventCount->Merge(lists[9]);
727 fEventCountDifferential->Merge(lists[10]);
728 fVertexContributors->Merge(lists[11]);
729 fCentralityDistribution->Merge(lists[12]);
730 fITSClusterMap->Merge(lists[13]);
732 for (Int_t i=0; i<kMaxLists; i++)
738 void AliUEHistograms::CopyReconstructedData(AliUEHistograms* from)
740 // copies those histograms extracted from ESD to this object
742 for (Int_t i=0; i<fgkUEHists; i++)
744 GetUEHist(i)->CopyReconstructedData(from->GetUEHist(i));
747 void AliUEHistograms::ExtendTrackingEfficiency(Bool_t verbose)
749 // delegates to AliUEHists
751 for (Int_t i=0; i<fgkUEHists; i++)
753 GetUEHist(i)->ExtendTrackingEfficiency(verbose);
756 void AliUEHistograms::Scale(Double_t factor)
758 // scales all contained histograms by the given factor
760 for (Int_t i=0; i<fgkUEHists; i++)
762 GetUEHist(i)->Scale(factor);
765 list.Add(fCorrelationpT);
766 list.Add(fCorrelationEta);
767 list.Add(fCorrelationPhi);
768 list.Add(fCorrelationR);
769 list.Add(fCorrelationLeading2Phi);
770 list.Add(fCorrelationMultiplicity);
771 list.Add(fEventCount);
772 list.Add(fEventCountDifferential);
773 list.Add(fVertexContributors);
774 list.Add(fCentralityDistribution);
775 list.Add(fITSClusterMap);
777 for (Int_t i=0; i<list.GetEntries(); i++)
778 ((TH1*) list.At(i))->Scale(factor);
781 void AliUEHistograms::Reset()
783 // delegates to AliUEHists
785 for (Int_t i=0; i<fgkUEHists; i++)
787 GetUEHist(i)->Reset();