1) Added to AliESDtrack the flags marking those which should not be accounted
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 Jun 2010 10:19:35 +0000 (10:19 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 Jun 2010 10:19:35 +0000 (10:19 +0000)
in the multiplicity estimation: IsOn(AliESDtrack::kMultSec) and
IsOn(AliESDtrack::kMultInV0).
2) Added to AliESDEvent the EstimateMultiplicity(...) method to get 3 different
multiplicity estimators: from tracklets, ITS/TPC tracks and ITS_SA_Pure

STEER/AliESDEvent.cxx
STEER/AliESDEvent.h
STEER/AliESDtrack.h

index 89dac29..4f8f55e 100644 (file)
@@ -1662,5 +1662,37 @@ Bool_t  AliESDEvent::IsPileupFromSPD(Int_t ncont, Double_t distz, Double_t nSigm
   }
 
 
-
-
+//______________________________________________________________________________
+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++;
+  }
+  //
+}
index 28d8190..a212270 100644 (file)
@@ -242,7 +242,8 @@ public:
   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;
index fb0fbb9..1741bf2 100644 (file)
@@ -56,7 +56,8 @@ public:
     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,
@@ -329,7 +330,8 @@ public:
   }
   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;}