]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
From Massimo:
authorfbellini <fbellini@cern.ch>
Thu, 27 Feb 2014 14:14:12 +0000 (15:14 +0100)
committerfbellini <fbellini@cern.ch>
Thu, 27 Feb 2014 14:14:12 +0000 (15:14 +0100)
- Retrieve DCA information for ESD case
- Retrieve info of the number of total daughters of one particle from the MC stack
- Implementation of cut on the max tot. number of daughters for true and generated pairs (default: disabled)
- Implementation of check on momentum conservation for true and generated pairs, needed for D0 analysis (default: disabled)

13 files changed:
PWGLF/RESONANCES/AliRsnMiniAnalysisTask.cxx
PWGLF/RESONANCES/AliRsnMiniAnalysisTask.h
PWGLF/RESONANCES/AliRsnMiniOutput.cxx
PWGLF/RESONANCES/AliRsnMiniOutput.h
PWGLF/RESONANCES/AliRsnMiniPair.cxx
PWGLF/RESONANCES/AliRsnMiniPair.h
PWGLF/RESONANCES/AliRsnMiniParticle.cxx
PWGLF/RESONANCES/AliRsnMiniParticle.h
PWGLF/RESONANCES/AliRsnMiniValue.cxx
PWGLF/RESONANCES/AliRsnMiniValue.h
PWGLF/RESONANCES/AliRsnMother.cxx
PWGLF/RESONANCES/AliRsnValueDaughter.cxx
PWGLF/RESONANCES/AliRsnValueDaughter.h

index 43536af44abbbf99de8e26e19b95d6ef8ed37449..7deee6bf4c35ffc5ec0be1b3e0c0bdb6c7a94591 100644 (file)
@@ -70,7 +70,9 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask() :
    fESDtrackCuts(0x0),
    fMiniEvent(0x0),
    fBigOutput(kFALSE),
-   fMixPrintRefresh(-1)
+   fMixPrintRefresh(-1),
+   fMaxNDaughters(-1),
+   fCheckP(kFALSE)
 {
 //
 // Dummy constructor ALWAYS needed for I/O.
@@ -107,7 +109,9 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask(const char *name, Bool_t useMC) :
    fESDtrackCuts(0x0),
    fMiniEvent(0x0),
    fBigOutput(kFALSE),
-   fMixPrintRefresh(-1)
+   fMixPrintRefresh(-1),
+   fMaxNDaughters(-1),
+   fCheckP(kFALSE)
 {
 //
 // Default constructor.
@@ -149,7 +153,9 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask(const AliRsnMiniAnalysisTask &cop
    fESDtrackCuts(copy.fESDtrackCuts),
    fMiniEvent(0x0),
    fBigOutput(copy.fBigOutput),
-   fMixPrintRefresh(copy.fMixPrintRefresh)
+   fMixPrintRefresh(copy.fMixPrintRefresh),
+   fMaxNDaughters(copy.fMaxNDaughters),
+   fCheckP(copy.fCheckP)
 {
 //
 // Copy constructor.
@@ -194,6 +200,8 @@ AliRsnMiniAnalysisTask &AliRsnMiniAnalysisTask::operator=(const AliRsnMiniAnalys
    fESDtrackCuts = copy.fESDtrackCuts;
    fBigOutput = copy.fBigOutput;
    fMixPrintRefresh = copy.fMixPrintRefresh;
+   fMaxNDaughters = copy.fMaxNDaughters;
+   fCheckP = copy.fCheckP;
    return (*this);
 }
 
@@ -909,7 +917,8 @@ void AliRsnMiniAnalysisTask::FillTrueMotherESD(AliRsnMiniEvent *miniEvent)
          //get mother pdg code
          if (part->Particle()->GetPdgCode() != def->GetMotherPDG()) continue;
          // check that daughters match expected species
-         if (part->Particle()->GetNDaughters() < 2) continue;
+         if (part->Particle()->GetNDaughters() < 2) continue; 
+        if (fMaxNDaughters > 0 && part->Particle()->GetNDaughters() > fMaxNDaughters) continue;
          label1 = part->Particle()->GetDaughter(0);
          label2 = part->Particle()->GetDaughter(1);
          daughter1 = (AliMCParticle *)fMCEvent->GetTrack(label1);
@@ -925,6 +934,9 @@ void AliRsnMiniAnalysisTask::FillTrueMotherESD(AliRsnMiniEvent *miniEvent)
             p2.SetXYZM(daughter2->Px(), daughter2->Py(), daughter2->Pz(), def->GetMass(0));
          }
          if (!okMatch) continue;
+        if(fCheckP && (TMath::Abs(part->Px()-(daughter1->Px()+daughter2->Px()))/(TMath::Abs(part->Px())+1.e-13)) > 0.00001 &&   
+                               (TMath::Abs(part->Py()-(daughter1->Py()+daughter2->Py()))/(TMath::Abs(part->Py())+1.e-13)) > 0.00001 &&
+                               (TMath::Abs(part->Pz()-(daughter1->Pz()+daughter2->Pz()))/(TMath::Abs(part->Pz())+1.e-13)) > 0.00001 ) continue;
          // assign momenta to computation object
          miniPair.Sum(0) = miniPair.Sum(1) = (p1 + p2);
          miniPair.FillRef(def->GetMotherMass());
@@ -959,6 +971,7 @@ void AliRsnMiniAnalysisTask::FillTrueMotherAOD(AliRsnMiniEvent *miniEvent)
          if (part->GetPdgCode() != def->GetMotherPDG()) continue;
          // check that daughters match expected species
          if (part->GetNDaughters() < 2) continue;
+        if (fMaxNDaughters > 0 && part->GetNDaughters() > fMaxNDaughters) continue;
          label1 = part->GetDaughter(0);
          label2 = part->GetDaughter(1);
          daughter1 = (AliAODMCParticle *)list->At(label1);
@@ -974,7 +987,11 @@ void AliRsnMiniAnalysisTask::FillTrueMotherAOD(AliRsnMiniEvent *miniEvent)
             p2.SetXYZM(daughter2->Px(), daughter2->Py(), daughter2->Pz(), def->GetMass(0));
          }
          if (!okMatch) continue;
-         // assign momenta to computation object
+        if(fCheckP && (TMath::Abs(part->Px()-(daughter1->Px()+daughter2->Px()))/(TMath::Abs(part->Px())+1.e-13)) > 0.00001 &&   
+                               (TMath::Abs(part->Py()-(daughter1->Py()+daughter2->Py()))/(TMath::Abs(part->Py())+1.e-13)) > 0.00001 &&
+                               (TMath::Abs(part->Pz()-(daughter1->Pz()+daughter2->Pz()))/(TMath::Abs(part->Pz())+1.e-13)) > 0.00001 ) continue; 
+        
+        // assign momenta to computation object
          miniPair.Sum(0) = miniPair.Sum(1) = (p1 + p2);
          miniPair.FillRef(def->GetMotherMass());
          // do computations
index 46237e13423e109660b9a01e0266acc86b27f13d..9a84cde0f1edb61cdbcc8f16c643a8372500aeae 100644 (file)
@@ -48,9 +48,12 @@ public:
    void                SetMaxDiffAngle(Double_t val)      {fMaxDiffAngle = val;}
    void                SetEventCuts(AliRsnCutSet *cuts)   {fEventCuts    = cuts;}
    void                SetMixPrintRefresh(Int_t n)        {fMixPrintRefresh = n;}
+   void                SetMaxNDaughters(Short_t n)        {fMaxNDaughters = n;}
+   void                SetCheckMomentumConservation(Bool_t checkP) {fCheckP = checkP;}
    Int_t               AddTrackCuts(AliRsnCutSet *cuts);
    TClonesArray       *Outputs()                          {return &fHistograms;}
    TClonesArray       *Values()                           {return &fValues;}
+   Short_t             GetMaxNDaughters()                 {return fMaxNDaughters;}
    void                SetEventQAHist(TString type,TH2F *histo);
    void                UseBigOutput(Bool_t b=kTRUE) { fBigOutput = b; }
 
@@ -108,8 +111,10 @@ private:
    AliRsnMiniEvent     *fMiniEvent;       //! mini-event cursor
    Bool_t               fBigOutput;       // flag if open file for output list
    Int_t                fMixPrintRefresh; // how often info in mixing part is printed
+   Short_t              fMaxNDaughters;   // maximum number of allowed mother's daughter
+   Bool_t               fCheckP;          // flag to set in order to check the momentum conservation for mothers
 
-   ClassDef(AliRsnMiniAnalysisTask, 6);   // AliRsnMiniAnalysisTask
+   ClassDef(AliRsnMiniAnalysisTask, 7);   // AliRsnMiniAnalysisTask
 };
 
 
index 60c3d74b2fc97c5a18d25f1fd1c12e3ec94a6f58..7390a6faeeb332598b2b5732f6c394277261db5e 100644 (file)
@@ -21,6 +21,7 @@
 #include "AliRsnMiniParticle.h"
 #include "AliRsnMiniPair.h"
 #include "AliRsnMiniEvent.h"
+#include "AliAODEvent.h"
 
 #include "AliLog.h"
 #include "AliRsnCutSet.h"
@@ -45,6 +46,8 @@ AliRsnMiniOutput::AliRsnMiniOutput() :
    fList(0x0),
    fSel1(0),
    fSel2(0),
+   fMaxNSisters(-1),
+   fCheckP(kFALSE),
    fCheckHistRange(kTRUE)
 {
 //
@@ -71,6 +74,8 @@ AliRsnMiniOutput::AliRsnMiniOutput(const char *name, EOutputType type, EComputat
    fList(0x0),
    fSel1(0),
    fSel2(0),
+   fMaxNSisters(-1),
+   fCheckP(kFALSE),
    fCheckHistRange(kTRUE)
 {
 //
@@ -97,6 +102,8 @@ AliRsnMiniOutput::AliRsnMiniOutput(const char *name, const char *outType, const
    fList(0x0),
    fSel1(0),
    fSel2(0),
+   fMaxNSisters(-1),
+   fCheckP(kFALSE),
    fCheckHistRange(kTRUE)
 {
 //
@@ -169,6 +176,8 @@ AliRsnMiniOutput::AliRsnMiniOutput(const AliRsnMiniOutput &copy) :
    fList(copy.fList),
    fSel1(0),
    fSel2(0),
+   fMaxNSisters(-1),
+   fCheckP(kFALSE),
    fCheckHistRange(copy.fCheckHistRange)
 {
 //
@@ -210,6 +219,8 @@ AliRsnMiniOutput &AliRsnMiniOutput::operator=(const AliRsnMiniOutput &copy)
 
    fSel1.Set(0);
    fSel2.Set(0);
+   fMaxNSisters = copy.fMaxNSisters;
+   fCheckP = copy.fCheckP;
    fCheckHistRange = copy.fCheckHistRange;
 
    return (*this);
@@ -496,6 +507,7 @@ Int_t AliRsnMiniOutput::FillPair(AliRsnMiniEvent *event1, AliRsnMiniEvent *event
             if (p2->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[0]) && p1->PDGAbs() == AliRsnDaughter::SpeciesPDG(fDaughter[1]))
                decayMatch = kTRUE;
             if (!decayMatch) continue;
+           if( (fMaxNSisters>0) && (p1->NTotSisters()==p2->NTotSisters()) && (p1->NTotSisters()>fMaxNSisters)) continue;
          }
          // check pair against cuts
          if (fPairCuts) {
index 5f473aba318bb0650ab4aba636615a5bcadfd976..a801a9b17071f6b898536bc01efc6636ad8d14d2 100644 (file)
@@ -10,6 +10,7 @@
 // -- definition of output histogram
 //
 
+#include "AliRsnEvent.h"
 #include "AliRsnDaughter.h"
 #include "AliRsnMiniParticle.h"
 
@@ -73,6 +74,7 @@ public:
    Int_t           GetMotherPDG()       const {return fMotherPDG;}
    Double_t        GetMotherMass()      const {return fMotherMass;}
    Bool_t          GetFillHistogramOnlyInRange() { return fCheckHistRange; }
+   Short_t         GetMaxNSisters()           {return fMaxNSisters;}
 
    void            SetOutputType(EOutputType type)    {fOutputType = type;}
    void            SetComputation(EComputation src)   {fComputation = src;}
@@ -83,6 +85,8 @@ public:
    void            SetMotherMass(Double_t mass)       {fMotherMass = mass;}
    void            SetPairCuts(AliRsnCutSet *set)     {fPairCuts = set;}
    void            SetFillHistogramOnlyInRange(Bool_t fillInRangeOnly) { fCheckHistRange = fillInRangeOnly; }
+   void            SetMaxNSisters(Short_t n)          {fMaxNSisters = n;}
+   void            SetCheckMomentumConservation(Bool_t checkP) {fCheckP = checkP;}
 
    void            AddAxis(Int_t id, Int_t nbins, Double_t min, Double_t max);
    void            AddAxis(Int_t id, Double_t min, Double_t max, Double_t step);
@@ -119,10 +123,11 @@ private:
    TList           *fList;             //! pointer to the TList containing the output
    TArrayI          fSel1;             //! list of selected particles for definition 1
    TArrayI          fSel2;             //! list of selected particles for definition 2
-
+   Short_t          fMaxNSisters;      // maximum number of allowed mother's daughter
+   Bool_t           fCheckP;           // flag to set in order to check the momentum conservation for daughters
    Bool_t           fCheckHistRange;   //  check if values is in histogram range
 
-   ClassDef(AliRsnMiniOutput,2)  // AliRsnMiniOutput class
+   ClassDef(AliRsnMiniOutput, 3)  // AliRsnMiniOutput class
 };
 
 #endif
index 20c0c707e9d9fefa9def30817020f528ff0997ad..6c8cfe4eb1d15a10c76afe6634167f00c647a111 100644 (file)
@@ -30,6 +30,9 @@ void AliRsnMiniPair::Fill
       fSum[i] = fP1[i] + fP2[i];
       fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), refMass);
    }
+
+   fNSisters=-1;
+   if (p1->NTotSisters()==p2->NTotSisters()) fNSisters = p1->NTotSisters();
 }
 
 //__________________________________________________________________________________________________
index 6fcfcbccd7f9dbc5a4cd706b80bec1fcaa51ec60..45459239f3ba03f7b0aa3532d9c3e729b0f467e0 100644 (file)
@@ -18,7 +18,7 @@ class AliRsnMiniParticle;
 class AliRsnMiniPair : public TObject {
 public:
 
-   AliRsnMiniPair() : fDCA1(0), fDCA2(0), fMother(-1), fMotherPDG(0), fNsisters(-1) { }
+   AliRsnMiniPair() : fDCA1(0), fDCA2(0), fMother(-1), fMotherPDG(0), fNSisters(-1) { }
   
    Int_t          &Mother()    {return fMother;}
    Int_t          &MotherPDG() {return fMotherPDG;}
@@ -48,8 +48,7 @@ public:
    Double_t        DaughterDCA(Int_t daughterId); 
    Double_t        DCAProduct();                                                   
    void            DaughterPxPyPz(Int_t daughterId, Bool_t mc, Double_t *pxpypz); 
-   Short_t         Nsisters()  {return fNsisters;}
-   void            SetNsisters(Short_t value)  {fNsisters=value;}
+   Short_t         NSisters()  {return fNSisters;}
 
  private:
    
@@ -63,7 +62,7 @@ public:
    
    Int_t          fMother;    // label of mothers (when common)
    Int_t          fMotherPDG; // PDG code of mother (when common)
-   Short_t        fNsisters;  // total number of mother's daughters in the MC stack
+   Short_t        fNSisters;  // total number of mother's daughters in the MC stack
    
    ClassDef(AliRsnMiniPair,2)
      };
index 90342d0ca475718d7be19b327fcf0a5eceff1dcc..e8679a79a58fa5b6167eb50472e570ecc3b22bbc 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "AliAODEvent.h"
 #include "AliRsnEvent.h"
+#include "AliRsnMiniEvent.h"
 #include "AliRsnMiniParticle.h"
 
 ClassImp(AliRsnMiniParticle)
@@ -27,6 +28,7 @@ void AliRsnMiniParticle::CopyDaughter(AliRsnDaughter *daughter)
    fPDG = 0;
    fMother = -1;
    fMotherPDG = 0;
+   fNTotSisters = -1;
    fCutBits = 0x0;
    fPsim[0] = fPrec[0] = fPsim[1] = fPrec[1] = fPsim[2] = fPrec[2] = 0.0;
 
@@ -56,7 +58,12 @@ void AliRsnMiniParticle::CopyDaughter(AliRsnDaughter *daughter)
    }
    
    AliRsnEvent *event = (AliRsnEvent *) daughter->GetOwnerEvent();
-   if (event && event->IsAOD()){
+   if (!event) {
+     AliWarning("Invalid reference event: cannot copy DCA nor Nsisters.");
+     return;
+   }
+   if (event->IsAOD()){
+     // DCA to Primary Vertex for AOD
      AliAODTrack *track = (AliAODTrack*) daughter->Ref2AODtrack();   
      AliAODEvent *aodEvent = (AliAODEvent*) event->GetRefAOD();
      if (track && aodEvent) {
@@ -67,10 +74,32 @@ void AliRsnMiniParticle::CopyDaughter(AliRsnDaughter *daughter)
         fDCA = b[0];
        }
      }
+     // Number of Daughters from MC
+     if (event->GetRefMC()) {
+       TClonesArray * list = event->GetAODList();
+       AliAODMCParticle *part = (AliAODMCParticle *)list->At(fMother);
+       if (part) fNTotSisters = part->GetNDaughters();
+     }
    } else {
-     AliWarning("DCA not implemented for ESDs");
+     if (event->IsESD()){
+       //DCA to Primary Vertex for ESD
+       AliESDtrack *track = (AliESDtrack*) daughter->Ref2ESDtrack();   
+       AliESDEvent *esdEvent = (AliESDEvent*) event->GetRefESD();
+       if (track && esdEvent) {
+        AliVVertex *vertex = (AliVVertex*) esdEvent->GetPrimaryVertex();
+        Double_t b[2], cov[3]; 
+        if (vertex) {
+          track->PropagateToDCA(vertex, esdEvent->GetMagneticField(), kVeryBig, b, cov); 
+          fDCA = b[0];
+        }
+       }
+       // Number of Daughters from MC 
+       if (event->GetRefMC()) {
+        AliMCParticle *part = (AliMCParticle *)event->GetRefMC()->GetTrack(fMother);
+        if(part)fNTotSisters = part->Particle()->GetNDaughters();
+       }
+     }
    }
-   
 }
 
 //__________________________________________________________________________________________________
index 8cedf26ebb5dbad0ed22d2e8baa9866469072c48..5ee432a1b8958b2aa9a96242808cebdf03d844b9 100644 (file)
@@ -16,7 +16,7 @@ class AliRsnDaughter;
 class AliRsnMiniParticle : public TObject {
 public:
 
-   AliRsnMiniParticle() : fIndex(-1), fCharge(0), fPDG(0), fMother(0), fMotherPDG(0), fDCA(0), fCutBits(0x0) {Int_t i = 3; while (i--) fPsim[i] = fPrec[i] = 0.0;}
+   AliRsnMiniParticle() : fIndex(-1), fCharge(0), fPDG(0), fMother(0), fMotherPDG(0), fDCA(0), fNTotSisters(0), fCutBits(0x0) {Int_t i = 3; while (i--) fPsim[i] = fPrec[i] = 0.0;}
 
    Int_t         &Index()                    {return fIndex;}
    Char_t        &Charge()                   {return fCharge;}
@@ -36,6 +36,7 @@ public:
    Short_t       &MotherPDG()                {return fMotherPDG;}
    UShort_t      &CutBits()                  {return fCutBits;}
    Double_t       DCA()                      {return fDCA;}
+   Short_t        NTotSisters()              {return fNTotSisters;}
    Bool_t         HasCutBit(Int_t i)         {UShort_t bit = 1 << i; return ((fCutBits & bit) != 0);}
    void           SetCutBit(Int_t i)         {UShort_t bit = 1 << i; fCutBits |=   bit;}
    void           ClearCutBit(Int_t i)       {UShort_t bit = 1 << i; fCutBits &= (~bit);}
@@ -53,9 +54,10 @@ private:
    Int_t     fMother;       // index of mother in its container
    Short_t   fMotherPDG;    // PDG code of mother
    Double_t  fDCA;          // DCA of the particle
+   Short_t   fNTotSisters;  // number of  daughters of the particle
    UShort_t  fCutBits;      // list of bits used to know what cuts were passed by this track
 
-   ClassDef(AliRsnMiniParticle,3)
+   ClassDef(AliRsnMiniParticle,4)
 };
 
 #endif
index a6d327545a94c3555e9ea36d4864df5d669bde8e..74f4985f84c830ba501712f74b802c3062913bfa 100644 (file)
@@ -119,6 +119,7 @@ const char *AliRsnMiniValue::TypeName(EType type)
       case kDCAproduct:   return "DaughterDCAproduct";
       case kFirstDaughterDCA: return "FirstDaughterDCA";
       case kSecondDaughterDCA: return "SecondDaughterDCA";
+      case kNSisters:     return "NumberOfSisters";
       default:            return "Undefined";
    }
 }
@@ -209,6 +210,8 @@ Float_t AliRsnMiniValue::Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event)
          return pair->DaughterDCA(0);
       case kSecondDaughterDCA:
          return pair->DaughterDCA(1);
+      case kNSisters:
+         return pair->NSisters();
       default:
          AliError("Invalid value type");
          return 1E20;
index 218d93964560388f8bef1fdefd7432606370b407..736e1cfd3b2d9e141043422320296fc9ae0fbfdb 100644 (file)
@@ -41,6 +41,7 @@ public:
       kDCAproduct,    // product of the daughter's dca to PV (same in AliRsnValuePair)
       kFirstDaughterDCA,  //DCA to PV of the first daughter of the pair
       kSecondDaughterDCA, //DCA to PV of the second daughter of the pair
+      kNSisters,    // number of daughters (only for MC)
       kTypes          // -- general limit ----------------------------------------------------------
    };
 
index f32b7b23e95fa461f53dda7c34fa6ae52ec160e6..9272b75499b3e718322ad4447d1cc94897bde50f 100644 (file)
@@ -254,8 +254,17 @@ Double_t AliRsnMother::DCAproduct()
     track2->PropagateToDCA(vertex, aodEvent->GetMagneticField(), kVeryBig, b2, cov2);    
     fDCAproduct = b1[0]*b2[0];  
   } else {
-    AliWarning("DCA product not implemented for ESDs"); 
-    fDCAproduct=0.0;
+    AliESDEvent *esdEvent = (AliESDEvent*)event1->GetRefESD();  
+    if (!esdEvent) return 0.0;
+    AliESDtrack *track1 = (AliESDtrack*)fDaughter[0]->Ref2ESDtrack();
+    AliESDtrack *track2 = (AliESDtrack*)fDaughter[1]->Ref2ESDtrack();
+    const AliVVertex *vertex = esdEvent->GetPrimaryVertex();
+    if (!vertex || !track1 || track2) return 0.0;
+     
+    Double_t b1[2], cov1[3], b2[2], cov2[3];
+    track1->PropagateToDCA(vertex, esdEvent->GetMagneticField(), kVeryBig, b1, cov1);    
+    track2->PropagateToDCA(vertex, esdEvent->GetMagneticField(), kVeryBig, b2, cov2);    
+    fDCAproduct = b1[0]*b2[0];  
   }
   return fDCAproduct;
 }
index 7e3bd88b033c3de53f02ab72544228bc4c602a52..e41a6631ecd555b44b22dceb2897130fa87c406e 100644 (file)
@@ -106,6 +106,7 @@ const char *AliRsnValueDaughter::GetTypeName() const
       case kPt:                       return "SingleTrackPt";
       case kPtpc:                     return "SingleTrackPtpc";
       case kEta:                      return "SingleTrackEta";
+      case kY:                        return "SingleTrackY";
       case kMass:                     return "SingleTrackMass";
       case kITSsignal:                return "SingleTrackITSsignal";
       case kTPCsignal:                 return "SingleTrackTPCsignal";
@@ -203,6 +204,10 @@ Bool_t AliRsnValueDaughter::Eval(TObject *object)
    case kEta:
      fComputedValue = (fUseMCInfo ? refMC->Eta() : ref->Eta());
      return kTRUE;
+     
+   case kY:
+     fComputedValue = (fUseMCInfo ? refMC->Y() : ref->Y());
+     return kTRUE;   
 
    case kMass:
      fComputedValue = (fUseMCInfo ? refMC->M() : ref->M());
index ad28ed53a0c4951d8cf0295773bfb4d58e1eb162..1626d4fbfbfaf49f32749e2f8c3dc808d95c3595 100644 (file)
@@ -20,6 +20,7 @@ public:
       kPt,         // transverse momentum
       kPtpc,       // total momentum in the TPC inner wall
       kEta,        // pseudo-rapidity
+      kY,          // rapidity
       kMass,       // mass
       kITSsignal,  // ITS signal
       kTPCsignal,  // TPC signal