}
-
-
+//______________________________________________________________________________
+void AliESDEvent::EstimateMultiplicity(Int_t &tracklets, Int_t &trITSTPC, Int_t &trITSSApure, Double_t eta, Bool_t useDCAFlag,Bool_t useV0Flag) const
+{
+ //
+ // calculates 3 estimators for the multiplicity in the -eta:eta range
+ // tracklets : using SPD tracklets only
+ // trITSTPC : using TPC/ITS + complementary ITS SA tracks + tracklets from clusters not used by tracks
+ // trITSSApure : using ITS standalone tracks + tracklets from clusters not used by tracks
+ // if useDCAFlag is true: account for the ESDtrack flag marking the tracks with large DCA
+ // if useV0Flag is true: account for the ESDtrack flag marking conversion and K0's V0s
+ tracklets = trITSSApure = trITSTPC = 0;
+ int ntr = fSPDMult ? fSPDMult->GetNumberOfTracklets() : 0;
+ //
+ // count tracklets
+ for (int itr=ntr;itr--;) {
+ if (TMath::Abs(fSPDMult->GetEta(itr))>eta) continue;
+ tracklets++;
+ if (fSPDMult->FreeClustersTracklet(itr,0)) trITSTPC++; // not used in ITS/TPC or ITS_SA track
+ if (fSPDMult->FreeClustersTracklet(itr,1)) trITSSApure++; // not used in ITS_SA_Pure track
+ }
+ //
+ // count real tracks
+ ntr = GetNumberOfTracks();
+ for (int itr=ntr;itr--;) {
+ AliESDtrack *t = GetTrack(itr);
+ if (TMath::Abs(t->Eta())>eta) continue;
+ if (!t->IsOn(AliESDtrack::kITSin)) continue;
+ if (useDCAFlag && t->IsOn(AliESDtrack::kMultSec)) continue;
+ if (useV0Flag && t->IsOn(AliESDtrack::kMultInV0)) continue;
+ if (t->IsOn(AliESDtrack::kITSpureSA)) trITSSApure++;
+ else trITSTPC++;
+ }
+ //
+}
void SetMultiplicity(const AliMultiplicity *mul);
const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
-
+ void EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
+ Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
Bool_t Clean(Float_t *cleanPars);
Bool_t RemoveKink(Int_t i) const;
kTIME=0x80000000,
kGlobalMerge=0x08000000,
kITSpureSA=0x10000000,
- kMultPrimary=0x4000000 //BIT(26): assumed to be primary for multiplicity estimates
+ kMultInV0=0x2000000, //BIT(25): assumed to be belong to V0 in multiplicity estimates
+ kMultSec=0x4000000 //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates
};
enum {
kTRDnPlanes = 6,
}
Bool_t IsHMPID() const {return fFlags&kHMPIDpid;}
Bool_t IsPureITSStandalone() const {return fFlags&kITSpureSA;}
- Bool_t IsMultPrimary() const {return fFlags&kMultPrimary;}
+ Bool_t IsMultPrimary() const {return !(fFlags&kMultSec);}
+ Bool_t IsMultSecondary() const {return (fFlags&kMultSec);}
Int_t GetEMCALcluster() {return fCaloIndex;}
void SetEMCALcluster(Int_t index) {fCaloIndex=index;}