]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/dielectron/AliDielectronVarManager.h
Update (Francesco, Gian Michele)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliDielectronVarManager.h
index 4d9be7085663d8e419ff0ac0ae5956db09c86579..f579c92d8512eafd85ab4712c853104e6bc84ea6 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <AliExternalTrackParam.h>
 #include <AliESDpid.h>
-#include <AliESDCentrality.h>
+#include <AliCentrality.h>
 #include <AliAODpidUtil.h>
 #include <AliPID.h>
 
@@ -80,6 +80,7 @@ public:
     kNclsTPCiter1,           // number of clusters assigned in the TPC after first iteration
     kNFclsTPC,               // number of findable clusters in the TPC
     kNFclsTPCr,              // number of findable clusters in the TPC with more robust definition
+    kNFclsTPCrFrac,          // number of found/findable clusters in the TPC with more robust definition
     kTPCsignalN,             // number of points used for dEdx
     kTPCchi2Cl,              // chi2/cl in TPC
     kTrackStatus,            // track status bits
@@ -99,6 +100,7 @@ public:
 
     kNumberOfDaughters,      // number of daughters
     kHaveSameMother,         // check that particles have the same mother (MC)
+    kIsJpsiPrimary,          // check if the particle is primary (MC)
     kITSsignal,                     // ITS dE/dx signal
     kITSsignalSSD1,         // SSD1 dE/dx signal
     kITSsignalSSD2,         // SSD2 dE/dx signal
@@ -190,6 +192,8 @@ private:
   static void FillVarMCParticle(const AliMCParticle *particle,       Double_t * const values);
   static void FillVarAODMCParticle(const AliAODMCParticle *particle, Double_t * const values);
   static void FillVarDielectronPair(const AliDielectronPair *pair,   Double_t * const values);
+  static void FillVarKFParticle(const AliKFParticle *pair,   Double_t * const values);
+  
   static void FillVarVEvent(const AliVEvent *event,                  Double_t * const values);
   static void FillVarESDEvent(const AliESDEvent *event,              Double_t * const values);
   static void FillVarAODEvent(const AliAODEvent *event,              Double_t * const values);
@@ -213,20 +217,19 @@ inline void AliDielectronVarManager::Fill(const TObject* object, Double_t * cons
   //
   // Main function to fill all available variables according to the type of particle
   //
-
   if      (object->IsA() == AliESDtrack::Class())       FillVarESDtrack(static_cast<const AliESDtrack*>(object), values);
   else if (object->IsA() == AliAODTrack::Class())       FillVarAODTrack(static_cast<const AliAODTrack*>(object), values);
   else if (object->IsA() == AliMCParticle::Class())     FillVarMCParticle(static_cast<const AliMCParticle*>(object), values);
   else if (object->IsA() == AliAODMCParticle::Class())  FillVarAODMCParticle(static_cast<const AliAODMCParticle*>(object), values);
   else if (object->IsA() == AliDielectronPair::Class()) FillVarDielectronPair(static_cast<const AliDielectronPair*>(object), values);
-
+  else if (object->IsA() == AliKFParticle::Class())     FillVarKFParticle(static_cast<const AliKFParticle*>(object),values);
   // Main function to fill all available variables according to the type of event
   
   else if (object->IsA() == AliVEvent::Class())         FillVarVEvent(static_cast<const AliVEvent*>(object), values);
   else if (object->IsA() == AliESDEvent::Class())       FillVarESDEvent(static_cast<const AliESDEvent*>(object), values);
   else if (object->IsA() == AliAODEvent::Class())       FillVarAODEvent(static_cast<const AliAODEvent*>(object), values);
   else if (object->IsA() == AliMCEvent::Class())        FillVarMCEvent(static_cast<const AliMCEvent*>(object), values);
-//   else Error("Fill",Form("Type %s is not supported by AliDielectronVarManager!", object->ClassName())); //TODO: implement without object needed
+//   else printf(Form("AliDielectronVarManager::Fill: Type %s is not supported by AliDielectronVarManager!", object->ClassName())); //TODO: implement without object needed
 }
 
 inline void AliDielectronVarManager::FillVarVParticle(const AliVParticle *particle, Double_t * const values)
@@ -276,6 +279,7 @@ inline void AliDielectronVarManager::FillVarESDtrack(const AliESDtrack *particle
   values[AliDielectronVarManager::kNclsTPCiter1]  = particle->GetTPCNclsIter1(); // TODO: get rid of the plain numbers
   values[AliDielectronVarManager::kNFclsTPC]      = particle->GetTPCNclsF();
   values[AliDielectronVarManager::kNFclsTPCr]     = particle->GetTPCClusterInfo(2,1);
+  values[AliDielectronVarManager::kNFclsTPCrFrac] = particle->GetTPCClusterInfo(2);
   values[AliDielectronVarManager::kTPCsignalN]    = particle->GetTPCsignalN();
   values[AliDielectronVarManager::kNclsTRD]       = particle->GetNcls(2); // TODO: get rid of the plain numbers
   values[AliDielectronVarManager::kTRDntracklets] = particle->GetTRDntracklets(); // TODO: GetTRDtracklets/GetTRDntracklets?
@@ -375,7 +379,8 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   values[AliDielectronVarManager::kNclsTPC]       = particle->GetTPCNcls();
   values[AliDielectronVarManager::kNclsTPCiter1]  = particle->GetTPCNcls(); // not really available in AOD
   values[AliDielectronVarManager::kNFclsTPC]      = 0;
-  values[AliDielectronVarManager::kNFclsTPCr]      = 0;
+  values[AliDielectronVarManager::kNFclsTPCr]     = 0;
+  values[AliDielectronVarManager::kNFclsTPCrFrac] = 0;
   values[AliDielectronVarManager::kNclsTRD]       = 0;
   values[AliDielectronVarManager::kTRDntracklets] = 0;
   values[AliDielectronVarManager::kTRDpidQuality] = 0;
@@ -444,7 +449,8 @@ inline void AliDielectronVarManager::FillVarMCParticle(const AliMCParticle *part
   values[AliDielectronVarManager::kNclsTPC]       = 0;
   values[AliDielectronVarManager::kNclsTPCiter1]  = 0; 
   values[AliDielectronVarManager::kNFclsTPC]      = 0;
-  values[AliDielectronVarManager::kNFclsTPCr]      = 0;
+  values[AliDielectronVarManager::kNFclsTPCr]     = 0;
+  values[AliDielectronVarManager::kNFclsTPCrFrac] = 0;
   values[AliDielectronVarManager::kNclsTRD]       = 0;
   values[AliDielectronVarManager::kTRDntracklets] = 0;
   values[AliDielectronVarManager::kTRDpidQuality] = 0;
@@ -478,7 +484,7 @@ inline void AliDielectronVarManager::FillVarMCParticle(const AliMCParticle *part
   AliMCParticle *mother = mc->GetMCTrackMother(particle);
   if (mother) values[AliDielectronVarManager::kPdgCodeMother] = mother->PdgCode();
 
-
+  values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(particle);
   values[AliDielectronVarManager::kNumberOfDaughters]=mc->NumberOfDaughters(particle);
 }
 
@@ -525,6 +531,7 @@ inline void AliDielectronVarManager::FillVarAODMCParticle(const AliAODMCParticle
 
   AliVParticle *mother = mc->GetMCTrackMother(particle);
   if (mother) values[AliDielectronVarManager::kPdgCodeMother] = mother->PdgCode();
+  values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(particle);
 
   values[AliDielectronVarManager::kNumberOfDaughters]=mc->NumberOfDaughters(particle);
 }
@@ -572,12 +579,67 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa
   
   if (mc->HasMC()){
   Bool_t samemother =  mc->HaveSameMother(pair);
+  values[AliDielectronVarManager::kIsJpsiPrimary] = mc->IsJpsiPrimary(pair);
   values[AliDielectronVarManager::kHaveSameMother] = samemother ;
   }//if (mc->HasMC())
 
 
 }
 
+inline void AliDielectronVarManager::FillVarKFParticle(const AliKFParticle *particle, Double_t * const values)
+{
+  //
+  // Fill track information available in AliVParticle into an array
+  //
+  values[AliDielectronVarManager::kPx]        = particle->GetPx();
+  values[AliDielectronVarManager::kPy]        = particle->GetPy();
+  values[AliDielectronVarManager::kPz]        = particle->GetPz();
+  values[AliDielectronVarManager::kPt]        = particle->GetPt();
+  values[AliDielectronVarManager::kP]         = particle->GetP();
+  
+  values[AliDielectronVarManager::kXv]        = particle->GetX();
+  values[AliDielectronVarManager::kYv]        = particle->GetY();
+  values[AliDielectronVarManager::kZv]        = particle->GetZ();
+  
+  values[AliDielectronVarManager::kOneOverPt] = 0;
+  values[AliDielectronVarManager::kPhi]       = particle->GetPhi();
+  values[AliDielectronVarManager::kTheta]     = 0.;
+  values[AliDielectronVarManager::kEta]       = particle->GetEta();
+  values[AliDielectronVarManager::kY]         = ((particle->GetE()*particle->GetE()-particle->GetPx()*particle->GetPx()-particle->GetPy()*particle->GetPy()-particle->GetPz()*particle->GetPz())>0.) ? TLorentzVector(particle->GetPx(),particle->GetPy(),particle->GetPz(),particle->GetE()).Rapidity() : -1111.;
+  
+  values[AliDielectronVarManager::kE]         = particle->GetE();
+  values[AliDielectronVarManager::kM]         = particle->GetMass();
+  values[AliDielectronVarManager::kCharge]    = particle->GetQ();
+  
+  values[AliDielectronVarManager::kNclsITS]       = 0;
+  values[AliDielectronVarManager::kNclsTPC]       = 0;
+  values[AliDielectronVarManager::kNclsTPCiter1]  = 0;
+  values[AliDielectronVarManager::kNFclsTPC]      = 0;
+  values[AliDielectronVarManager::kNclsTRD]       = 0;
+  values[AliDielectronVarManager::kTRDntracklets] = 0;
+  values[AliDielectronVarManager::kTRDpidQuality] = 0;
+  values[AliDielectronVarManager::kTPCchi2Cl]     = 0;
+  values[AliDielectronVarManager::kTrackStatus]   = 0;
+  values[AliDielectronVarManager::kTRDprobEle]    = 0;
+  values[AliDielectronVarManager::kTRDprobPio]    = 0;
+  values[AliDielectronVarManager::kTPCsignalN]    = 0;
+  values[AliDielectronVarManager::kImpactParXY]   = 0;
+  values[AliDielectronVarManager::kImpactParZ]    = 0;
+  values[AliDielectronVarManager::kPIn]           = 0;
+  values[AliDielectronVarManager::kTPCsignal]     = 0;
+  values[AliDielectronVarManager::kTPCnSigmaEle]  = 0;
+  values[AliDielectronVarManager::kTPCnSigmaPio]  = 0;
+  values[AliDielectronVarManager::kTPCnSigmaMuo]  = 0;
+  values[AliDielectronVarManager::kTPCnSigmaKao]  = 0;
+  values[AliDielectronVarManager::kTPCnSigmaPro]  = 0;
+  values[AliDielectronVarManager::kITSclusterMap] = 0;
+  
+  values[AliDielectronVarManager::kPdgCode]       = 0;
+  values[AliDielectronVarManager::kPdgCodeMother] = 0;
+  
+  
+  if ( fgEvent ) AliDielectronVarManager::Fill(fgEvent, values);
+}
 
 inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Double_t * const values)
 {
@@ -614,7 +676,7 @@ inline void AliDielectronVarManager::FillVarESDEvent(const AliESDEvent *event, D
   FillVarVEvent(event, values);
 
   Double_t centralityF=-1;
-  AliESDCentrality *esdCentrality = const_cast<AliESDEvent*>(event)->GetCentrality();
+  AliCentrality *esdCentrality = const_cast<AliESDEvent*>(event)->GetCentrality();
   if (esdCentrality) centralityF = esdCentrality->GetCentralityPercentile("V0M");
   
   // Fill AliESDEvent interface specific information
@@ -777,3 +839,4 @@ inline void AliDielectronVarManager::FillValues(const TParticle *particle, Doubl
 }*/
 
 #endif
+