15 #include <TClonesArray.h> 16 #include "AliVEvent.h" 19 #include "AliVParticle.h" 27 ClassImp(AliEmcalContainer);
35 AliEmcalContainer::AliEmcalContainer():
40 fIsParticleLevel(kFALSE),
72 AliEmcalContainer::AliEmcalContainer(
const char *name):
77 fIsParticleLevel(kFALSE),
108 TObject *AliEmcalContainer::operator[](
int index)
const {
109 if(index >= 0 && index < GetNEntries())
return fClArray->At(index);
117 void AliEmcalContainer::SetClassName(
const char *clname)
120 if (cls.InheritsFrom(fBaseClassName)) {
124 AliError(Form(
"Unable to set class name %s for this container, it must inherits from %s!",clname,fBaseClassName.Data()));
132 void AliEmcalContainer::GetVertexFromEvent(
const AliVEvent * event)
134 const AliVVertex *vertex =
event->GetPrimaryVertex();
135 if (vertex) vertex->GetXYZ(fVertex);
143 void AliEmcalContainer::SetArray(
const AliVEvent *event)
146 if(fClArrayName ==
"usedefault"){
147 fClArrayName = GetDefaultArrayName(event);
155 GetVertexFromEvent(event);
157 if (!fClArrayName.IsNull() && !fClArray) {
158 fClArray =
dynamic_cast<TClonesArray*
>(
event->FindListObject(fClArrayName));
160 AliError(Form(
"%s: Could not retrieve array with name %s!", GetName(), fClArrayName.Data()));
167 fLoadedClass = fClArray->GetClass();
169 if (!fClassName.IsNull()) {
170 if (!fLoadedClass->InheritsFrom(fClassName)) {
171 AliError(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
172 GetName(), fLoadedClass->GetName(), fClArrayName.Data(), fClassName.Data()));
178 fLabelMap =
dynamic_cast<AliNamedArrayI*
>(
event->FindListObject(fClArrayName +
"_Map"));
185 void AliEmcalContainer::NextEvent(
const AliVEvent * event)
192 GetVertexFromEvent(event);
199 Int_t AliEmcalContainer::GetNAcceptEntries()
const{
201 for(
int index = 0; index < GetNEntries(); index++){
202 UInt_t rejectionReason = 0;
203 if(AcceptObject(index, rejectionReason)) result++;
213 Int_t AliEmcalContainer::GetIndexFromLabel(
Int_t lab)
const 216 if (lab < fLabelMap->GetSize()) {
217 return fLabelMap->At(lab);
220 AliDebug(3,Form(
"%s_AliEmcalContainer::GetIndexFromLabel - Label not found in the map, returning -1...",fClArrayName.Data()));
225 AliDebug(3,Form(
"%s_AliEmcalContainer::GetIndexFromLabel - No index-label map found, returning label...",fClArrayName.Data()));
235 UShort_t AliEmcalContainer::GetRejectionReasonBitPosition(
UInt_t rejectionReason)
237 UInt_t rs = rejectionReason;
239 while (rs >>= 1) { p++; }
250 Bool_t AliEmcalContainer::SamePart(
const AliVParticle* part1,
const AliVParticle* part2,
Double_t dist)
252 if(!part1)
return kFALSE;
253 if(!part2)
return kFALSE;
254 Double_t dPhi = TMath::Abs(part1->Phi() - part2->Phi());
255 Double_t dEta = TMath::Abs(part1->Eta() - part2->Eta());
256 Double_t dpT = TMath::Abs(part1->Pt() - part2->Pt());
257 dPhi = TVector2::Phi_mpi_pi(dPhi);
258 if (dPhi > dist)
return kFALSE;
259 if (dEta > dist)
return kFALSE;
260 if (dpT > dist)
return kFALSE;
275 if (mom.Pt() < fMinPt || mom.Pt() > fMaxPt) {
276 rejectionReason |= kPtCut;
280 if (mom.E() < fMinE || mom.E() > fMaxE) {
281 rejectionReason |= kPtCut;
288 if (fMinEta < fMaxEta && (eta < fMinEta || eta > fMaxEta)) {
289 rejectionReason |= kAcceptanceCut;
293 if (fMinPhi < fMaxPhi && (phi < fMinPhi || phi > fMaxPhi)) {
294 rejectionReason |= kAcceptanceCut;
324 const AliEmcalIterableMomentumContainer AliEmcalContainer::all_momentum()
const {
325 return AliEmcalIterableMomentumContainer(
this,
false);
333 const AliEmcalIterableMomentumContainer AliEmcalContainer::accepted_momentum()
const {
334 return AliEmcalIterableMomentumContainer(
this,
true);
345 vphi = TVector2::Phi_0_2pi(vphi);
346 mphi = TVector2::Phi_0_2pi(mphi);
348 Double_t dphi = TVector2::Phi_mpi_pi(mphi - vphi);
static const AliVEvent * GetEvent(const AliVEvent *inputEvent, bool isEmbedding=false)
Declaration of class AliTLorentzVector.
Double_t Phi_0_2pi() const
Container implementing iterable functionality of the EMCAL containers.