]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added quantities for V0 daughters + modified cuts for V0 + modified cuts and train...
authorfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 May 2013 10:20:50 +0000 (10:20 +0000)
committerfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 May 2013 10:20:50 +0000 (10:20 +0000)
PWGLF/RESONANCES/AliRsnCutDaughterSigmaStar2010PP.cxx
PWGLF/RESONANCES/AliRsnCutDaughterSigmaStar2010PP.h
PWGLF/RESONANCES/AliRsnCutV0.cxx
PWGLF/RESONANCES/AliRsnCutV0.h
PWGLF/RESONANCES/AliRsnValueDaughter.cxx
PWGLF/RESONANCES/AliRsnValueDaughter.h
PWGLF/RESONANCES/macros/mini/AddAnalysisTaskSigmaStarPP.C
PWGLF/RESONANCES/macros/mini/ConfigSigmaStar.C
PWGLF/RESONANCES/macros/mini/ConfigSigmaStarPbPb.C

index 26d1741ab28f1b6970781b3988d66835ba998c9d..b6c3c45f733a8a43ca2de1550176b6d9666d2c8a 100644 (file)
@@ -20,7 +20,8 @@ AliRsnCutDaughterSigmaStar2010PP::AliRsnCutDaughterSigmaStar2010PP(const char *n
    fPID(pid),
    fCutQuality(Form("%sQuality", name)),
    fPIDCut(3.0),
-   fMinTPCcluster(70)
+   fMinTPCcluster(70),
+   fDCARptFormula("")
 {
 //
 // Constructor
@@ -29,8 +30,7 @@ AliRsnCutDaughterSigmaStar2010PP::AliRsnCutDaughterSigmaStar2010PP(const char *n
 
    fCutQuality.SetPtRange(0.15, 1E+20);
    fCutQuality.SetEtaRange(-0.8, 0.8);
-   fCutQuality.SetDCARmax(0.05);
-   //fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
+   fCutQuality.SetDCARPtFormula(fDCARptFormula);
    fCutQuality.SetDCAZmax(2.0);
    fCutQuality.SetSPDminNClusters(1);
    fCutQuality.SetITSminNClusters(0);
@@ -103,22 +103,7 @@ Bool_t AliRsnCutDaughterSigmaStar2010PP::IsSelected(TObject *obj)
    //For the moment TOF is not used - PID ONLY WITH TPC - 3 sigmas in the whole range
 
    // TPC:
-   // below 350 MeV: 5sigma
-   // between 350 and 500 MeV: 3sigma
-   // pions above 500 MeV: 2sigma
-   // kaons between 500 and 700 MeV: 2sigma
-   // kaons above 700 MeV: rejected
-   /*if (pTPC <= 0.35)
-      maxTPC = 5.0;
-   else if (pTPC <= 0.5)
-      maxTPC = 3.0;
-   else if (pTPC > 0.5 && fPID == AliPID::kPion)
-      maxTPC = 2.0;
-   else if (pTPC > 0.5 && pTPC <= 0.7 && fPID == AliPID::kKaon)
-      maxTPC = 2.0;
-   else
-      return kFALSE;*/
-   //maxTPC = 3.0;
+   
    maxTPC = fPIDCut;
    return (nsTPC <= maxTPC);
 
index b688cf8b344c1a66fb62bb503ca583858988dc20..9666e94b2398340a6a2606d7d87e4a60b82be9e9 100644 (file)
@@ -17,27 +17,30 @@ class AliRsnCutDaughterSigmaStar2010PP : public AliRsnCut {
 public:
 
    AliRsnCutDaughterSigmaStar2010PP(const char *name = "", AliPID::EParticleType pid = AliPID::kPion);
+   AliRsnCutDaughterSigmaStar2010PP(const AliRsnCutDaughterSigmaStar2010PP &copy);
+   AliRsnCutDaughterSigmaStar2010PP &operator=(const AliRsnCutDaughterSigmaStar2010PP &copy);
    virtual ~AliRsnCutDaughterSigmaStar2010PP() { }
 
-   //void                   SetPID(AliPID::EParticleType type) {fPID = type;}
-   AliRsnCutTrackQuality *CutQuality()                       {return &fCutQuality;}
+   AliRsnCutTrackQuality *CutQuality()                         {return &fCutQuality;}
    Bool_t                 MatchTOF(const AliVTrack *vtrack);
    virtual Bool_t         IsSelected(TObject *obj);
 
-   void           SetPIDCut(Double_t value)                  {fPIDCut = value;}
-   void           SetMinTPCcluster(Int_t value)              {fMinTPCcluster = value;}
-   
+   void           SetPIDCut(Double_t value)                    {fPIDCut = value;}
+   void           SetMinTPCcluster(Int_t value)                {fMinTPCcluster = value;}
+   void           SetDCARPtFormula(const char *formula)        {fDCARptFormula = formula;}
+    
 private:
 
-   AliPID::EParticleType fPID;              // PID for track
-   AliRsnCutTrackQuality fCutQuality;       // track quality cut
+   AliPID::EParticleType fPID;                  // PID for track
+   AliRsnCutTrackQuality fCutQuality;           // track quality cut
 
    ClassDef(AliRsnCutDaughterSigmaStar2010PP,2) // cut definitions for Sigma*
 
 protected:
 
-   Double_t         fPIDCut;          // nsigmas for pions
-   Int_t            fMinTPCcluster;   // min allowed TPC cluster
+   Double_t         fPIDCut;                    // nsigmas for pions
+   Int_t            fMinTPCcluster;             // min allowed TPC cluster
+   TString          fDCARptFormula;             // min DCAR pt dependent formula
 };
 
 //__________________________________________________________________________________________________
index efb6e2b355db894965497edf8784a5d2fb737cc5..f652902a74053a9667516b607e1f8e81308ecda8 100644 (file)
@@ -30,7 +30,6 @@
 ClassImp(AliRsnCutV0)
 
 //_________________________________________________________________________________________________
-//AliRsnCutV0::AliRsnCutV0(const char *name, Int_t hypothesis) :
 AliRsnCutV0::AliRsnCutV0(const char *name, Int_t hypothesis, AliPID::EParticleType pid, AliPID::EParticleType pid2) :
    AliRsnCut(name, AliRsnTarget::kDaughter),
    fHypothesis(0),
@@ -41,11 +40,11 @@ AliRsnCutV0::AliRsnCutV0(const char *name, Int_t hypothesis, AliPID::EParticleTy
    fMaxDaughtersDCA(0.5),
    fMinTPCcluster(70),
    fMaxRapidity(0.8),
+   fDCARptFormula(""),
    fPID(pid),
    fPID2(pid2),
-   fPIDCut1(0),
-   fPIDCut2(0),
-   fPIDCut3(0),
+   fPIDCutProton(0),
+   fPIDCutPion(0),
    fESDtrackCuts(0x0),
    fCutQuality(Form("%sDaughtersQuality", name)),
    fAODTestFilterBit(5)
@@ -69,11 +68,11 @@ AliRsnCutV0::AliRsnCutV0(const AliRsnCutV0 &copy) :
    fMaxDaughtersDCA(copy.fMaxDaughtersDCA),
    fMinTPCcluster(copy.fMinTPCcluster),
    fMaxRapidity(copy.fMaxRapidity),
+   fDCARptFormula(copy.fDCARptFormula),   
    fPID(copy.fPID),
    fPID2(copy.fPID2),
-   fPIDCut1(copy.fPIDCut1),
-   fPIDCut2(copy.fPIDCut2),
-   fPIDCut3(copy.fPIDCut3),
+   fPIDCutProton(copy.fPIDCutProton),
+   fPIDCutPion(copy.fPIDCutPion),
    fESDtrackCuts(copy.fESDtrackCuts),
    fCutQuality(copy.fCutQuality),
    fAODTestFilterBit(copy.fAODTestFilterBit)
@@ -85,8 +84,7 @@ AliRsnCutV0::AliRsnCutV0(const AliRsnCutV0 &copy) :
 //
    fCutQuality.SetPtRange(0.15, 1E+20);
    fCutQuality.SetEtaRange(-0.8, 0.8);
-   fCutQuality.SetDCARmax(0.05);
-   //fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
+   fCutQuality.SetDCARPtFormula(fDCARptFormula);
    fCutQuality.SetDCAZmax(2.0);
    fCutQuality.SetSPDminNClusters(1);
    fCutQuality.SetITSminNClusters(0);
@@ -115,11 +113,12 @@ AliRsnCutV0 &AliRsnCutV0::operator=(const AliRsnCutV0 &copy)
    fMaxDaughtersDCA = copy.fMaxDaughtersDCA;
    fMinTPCcluster = copy.fMinTPCcluster;
    fMaxRapidity = copy.fMaxRapidity;
+   fDCARptFormula = copy.fDCARptFormula;
+   fCutQuality = copy.fCutQuality;
    fPID = copy.fPID;
    fPID2 = copy.fPID2;
-   fPIDCut1 = copy.fPIDCut1;
-   fPIDCut2 = copy.fPIDCut2;
-   fPIDCut3 = copy.fPIDCut3;
+   fPIDCutProton = copy.fPIDCutProton;
+   fPIDCutPion = copy.fPIDCutPion;
    fESDtrackCuts = copy.fESDtrackCuts;
    fCutQuality = copy.fCutQuality;
    fAODTestFilterBit = copy.fAODTestFilterBit;
@@ -244,8 +243,8 @@ Bool_t AliRsnCutV0::CheckESD(AliESDv0 *v0)
    // and computes all values used in the PID cut
    //Bool_t   isTOFpos  = MatchTOF(ptrack);
    //Bool_t   isTOFneg  = MatchTOF(ntrack);
-   Double_t pospTPC   = pTrack->GetTPCmomentum();
-   Double_t negpTPC   = nTrack->GetTPCmomentum();
+   //Double_t pospTPC   = pTrack->GetTPCmomentum();
+   //Double_t negpTPC   = nTrack->GetTPCmomentum();
    //Double_t posp      = pTrack->P();
    //Double_t negp      = nTrack->P();
    Double_t posnsTPC   = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, fPID));
@@ -269,17 +268,9 @@ Bool_t AliRsnCutV0::CheckESD(AliESDv0 *v0)
       //return (posnsTOF <= maxTOF);
       //} else {
       // TPC:
-      // below 600 MeV: 4sigma
-      // above 600 MeV: 3sigma
-
-      if (pospTPC <= 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut1;
-      else if (pospTPC > 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut2;
-      else
-         return kFALSE;
 
-      maxTPC2 = fPIDCut3;
+      maxTPC = fPIDCutProton;
+      maxTPC2 = fPIDCutPion;
 
       if (! ((posnsTPC <= maxTPC) && (negnsTPC2 <= maxTPC2)) ) {
          AliDebugClass(2, "Failed check on V0 PID");
@@ -298,17 +289,10 @@ Bool_t AliRsnCutV0::CheckESD(AliESDv0 *v0)
       //return (negnsTOF <= maxTOF);
       //} else {
       // TPC:
-      // below 600 MeV: 4sigma
-      // above 600 MeV: 3sigma
-
-      if (negpTPC <= 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut1;
-      else if (negpTPC > 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut2;
-      else
-         return kFALSE;
 
-      maxTPC2 = fPIDCut3;
+     
+         maxTPC = fPIDCutProton;
+         maxTPC2 = fPIDCutPion;
 
       if(! ((negnsTPC <= maxTPC) && (posnsTPC2 <= maxTPC2)) ) {
          AliDebugClass(2, "Failed check on V0 PID");
@@ -447,8 +431,8 @@ Bool_t AliRsnCutV0::CheckAOD(AliAODv0 *v0)
    // and computes all values used in the PID cut
    //Bool_t   isTOFpos  = MatchTOF(ptrack);
    //Bool_t   isTOFneg  = MatchTOF(ntrack);
-   Double_t pospTPC   = pTrack->GetTPCmomentum();
-   Double_t negpTPC   = nTrack->GetTPCmomentum();
+   //Double_t pospTPC   = pTrack->GetTPCmomentum();
+   //Double_t negpTPC   = nTrack->GetTPCmomentum();
    //Double_t posp      = pTrack->P();
    //Double_t negp      = nTrack->P();
    Double_t posnsTPC   = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, fPID));
@@ -474,17 +458,10 @@ Bool_t AliRsnCutV0::CheckAOD(AliAODv0 *v0)
       //return (posnsTOF <= maxTOF);
       //} else {
       // TPC:
-      // below 600 MeV: 4sigma
-      // above 600 MeV: 3sigma
-
-      if (pospTPC <= 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut1; // EF safer value to run on MC
-      else if (pospTPC > 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut2; // EF safer value to run on MC
-      else
-         return kFALSE;
-
-      maxTPC2 = fPIDCut3; // EF safer value to run on MC
+     
+     
+         maxTPC = fPIDCutProton; 
+         maxTPC2 = fPIDCutPion; 
 
       if (! ((posnsTPC <= maxTPC) && (negnsTPC2 <= maxTPC2)) ) {
          AliDebugClass(2, "Failed check on V0 PID");
@@ -502,17 +479,10 @@ Bool_t AliRsnCutV0::CheckAOD(AliAODv0 *v0)
       //return (negnsTOF <= maxTOF);
       //} else {
       // TPC:
-      // below 600 MeV: 4sigma
-      // above 600 MeV: 3sigma
-
-      if (negpTPC <= 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut1; // EF safer value to run on MC
-      else if (negpTPC > 0.6 && fPID==AliPID::kProton)
-         maxTPC = fPIDCut2; // EF safer value to run on MC
-      else
-         return kFALSE;
 
-      maxTPC2 = fPIDCut3; // EF safer value to run on MC
+      
+         maxTPC = fPIDCutProton;
+         maxTPC2 = fPIDCutPion;
 
       if(! ((negnsTPC <= maxTPC) && (posnsTPC2 <= maxTPC2)) ) {
          AliDebugClass(2, "Failed check on V0 PID");
index 0506fb2a129a484fd0a6356b0a9531e0f498bb07..b0ebbbfeb6ef7fb752f7c9a8dd206ee31c34555d 100644 (file)
@@ -18,7 +18,6 @@ class AliRsnCutV0 : public AliRsnCut {
 public:
 
 
-   //AliRsnCutV0(const char *name = "AliRsnCutV0", Int_t hypothesis = kLambda0);
    AliRsnCutV0(const char *name = "AliRsnCutV0", Int_t hypothesis = kLambda0, AliPID::EParticleType pid = AliPID::kProton, AliPID::EParticleType pid2 = AliPID::kPion);
    AliRsnCutV0(const AliRsnCutV0 &copy);
    AliRsnCutV0 &operator=(const AliRsnCutV0 &copy);
@@ -32,13 +31,14 @@ public:
    void           SetMaxDaughtersDCA(Double_t value)       {fMaxDaughtersDCA = value;}
    void           SetMinTPCcluster(Int_t value)            {fMinTPCcluster = value;}
    void           SetMaxRapidity(Double_t value)           {fMaxRapidity = value;}
-
-   void           SetPIDCut1(Double_t value)               {fPIDCut1 = value;}
-   void           SetPIDCut2(Double_t value)               {fPIDCut2 = value;}
-   void           SetPIDCut3(Double_t value)               {fPIDCut3 = value;}
-
-   AliRsnCutTrackQuality *CutQuality()                       {return &fCutQuality;}
-   void           SetAODTestFilterBit(Int_t value) {fAODTestFilterBit = value;}
+   void           SetDCARPtFormula(const char *formula)    {fDCARptFormula = formula;}
+   
+   void           SetPIDCutProton(Double_t value)          {fPIDCutProton = value;}
+   void           SetPIDCutPion(Double_t value)            {fPIDCutPion = value;}
+  
+
+   AliRsnCutTrackQuality *CutQuality()                     {return &fCutQuality;}
+   void           SetAODTestFilterBit(Int_t value)         {fAODTestFilterBit = value;}
    Int_t          GetAODTestFilterBit()                    {return fAODTestFilterBit;}
 
    virtual Bool_t IsSelected(TObject *obj);
@@ -49,6 +49,7 @@ protected:
    Bool_t      CheckESD(AliESDv0 *track);
    Bool_t      CheckAOD(AliAODv0 *track);
 
+   
    Int_t            fHypothesis;       // PDG code corresponding to expected V0 hypothesis
    Double_t         fMass;             // mass corresponding to hypothesis
    Double_t         fTolerance;        // tolerance in the difference between computed and expected mass
@@ -57,20 +58,20 @@ protected:
    Double_t         fMaxDaughtersDCA;  // max allowed DCA between the two daughers
    Int_t            fMinTPCcluster;    // min allowed TOC cluster
    Double_t         fMaxRapidity;      // max allowed V0 rapidity
-
+   TString          fDCARptFormula;    // min DCAR pt dependent formula
+   
    AliPID::EParticleType fPID;         // PID for track
    AliPID::EParticleType fPID2;        // PID for track
 
-   Double_t         fPIDCut1;          // nsigmas for protons < 600 MeV/c
-   Double_t         fPIDCut2;          // nsigmas for protons > 600 MeV/c
-   Double_t         fPIDCut3;          // nsigmas for pions
-
-
+   Double_t         fPIDCutProton;          // nsigmas for protons
+   Double_t         fPIDCutPion;          // nsigmas for pions
+   
    AliESDtrackCuts *fESDtrackCuts;     // quality cuts for v0 daughters
-
-   AliRsnCutTrackQuality fCutQuality;       // track quality cut
-   Int_t            fAODTestFilterBit;  // test filter bit for AODs
-
+   
+   AliRsnCutTrackQuality fCutQuality;  // track quality cut
+   
+   Int_t            fAODTestFilterBit; // test filter bit for AODs
+   
    ClassDef(AliRsnCutV0, 1)
 };
 
index e1141b919c6b758b76a6a14d273c0c9e2517c5b5..f7a1948a9142e591c958fa02085593fbf3dde1bf 100644 (file)
@@ -102,24 +102,28 @@ const char *AliRsnValueDaughter::GetTypeName() const
 //
 
    switch (fType) {
-      case kP:           return "SingleTrackPtot";
-      case kPt:          return "SingleTrackPt";
-      case kPtpc:        return "SingleTrackPtpc";
-      case kEta:         return "SingleTrackEta";
-      case kMass:        return "SingleTrackMass";
-      case kITSsignal:   return "SingleTrackITSsignal";
-      case kTPCsignal:   return "SingleTrackTPCsignal";
-      case kTOFsignal:   return "SingleTrackTOFsignal";
-      case kTPCnsigmaPi: return "SingleTrackTPCnsigmaPion";
-      case kTPCnsigmaK:  return "SingleTrackTPCnsigmaKaon";
-      case kTPCnsigmaP:  return "SingleTrackTPCnsigmaProton";
-      case kTOFnsigmaPi: return "SingleTrackTOFnsigmaPion";
-      case kTOFnsigmaK:  return "SingleTrackTOFnsigmaKaon";
-      case kTOFnsigmaP:  return "SingleTrackTOFnsigmaProton";
-      case kCharge:      return "SingleTrackCharge";
-      case kPhi:         return "SingleTrackPhi";
-      case kPhiOuterTPC: return "SingleTrackPhiOuterTPC";
-      default:           return "Undefined";
+      case kP:                        return "SingleTrackPtot";
+      case kPt:                       return "SingleTrackPt";
+      case kPtpc:                     return "SingleTrackPtpc";
+      case kEta:                      return "SingleTrackEta";
+      case kMass:                     return "SingleTrackMass";
+      case kITSsignal:                return "SingleTrackITSsignal";
+      case kTPCsignal:                 return "SingleTrackTPCsignal";
+      case kTOFsignal:                 return "SingleTrackTOFsignal";
+      case kTPCnsigmaPi:               return "SingleTrackTPCnsigmaPion";
+      case kTPCnsigmaK:                return "SingleTrackTPCnsigmaKaon";
+      case kTPCnsigmaP:                return "SingleTrackTPCnsigmaProton";
+      case kTOFnsigmaPi:               return "SingleTrackTOFnsigmaPion";
+      case kTOFnsigmaK:                return "SingleTrackTOFnsigmaKaon";
+      case kTOFnsigmaP:                return "SingleTrackTOFnsigmaProton";
+      case kV0DCA:                     return "V0DCAToPrimaryVertex";
+      case kDaughterDCA:               return "V0DaughterDCA";
+      case kCosPointAng:               return "V0CosineOfPointingAngle";
+      case kLambdaProtonPIDCut:         return "V0LambdaProtonNsigma";
+      case kAntiLambdaAntiProtonPIDCut: return "V0AntiLambdaAntiProtonNsigma";
+      case kLambdaPionPIDCut:           return "V0LambdaPionNsigma";
+      case kAntiLambdaAntiPionPIDCut:   return "V0AntiLambdaPionNsigma";
+      default:                          return "Undefined";
    }
 }
 
@@ -143,6 +147,14 @@ Bool_t AliRsnValueDaughter::Eval(TObject *object)
    AliVParticle   *ref   = fDaughter->GetRef();
    AliVParticle   *refMC = fDaughter->GetRefMC();
    AliVTrack      *track = fDaughter->Ref2Vtrack();
+   AliESDv0       *v0esd = fDaughter->Ref2ESDv0();
+   AliAODv0       *v0aod = fDaughter->Ref2AODv0();
+   AliESDEvent    *lESDEvent = fEvent->GetRefESD();
+   
+   Double_t xPrimaryVertex = lESDEvent->GetPrimaryVertex()->GetX();
+   Double_t yPrimaryVertex = lESDEvent->GetPrimaryVertex()->GetY();
+   Double_t zPrimaryVertex = lESDEvent->GetPrimaryVertex()->GetZ();
+   
    if (fUseMCInfo && !refMC) {
       AliError("No MC");
       return kFALSE;
@@ -371,34 +383,137 @@ Bool_t AliRsnValueDaughter::Eval(TObject *object)
             fComputedValue = 0.0;
             return kFALSE;
          }
-
-      case kCharge:
-         fComputedValue = (fUseMCInfo ? refMC->Charge() : ref->Charge());
-         return kTRUE;
-   
-      case kPhi:         
-       fComputedValue = (fUseMCInfo ? (refMC->Phi()*TMath::RadToDeg()) : (ref->Phi()*TMath::RadToDeg()));      
-       return kTRUE;
-
-      case kPhiOuterTPC:    
-       if (track) {
-         Double_t pos[3]={0.,0.,0.};
-         Double_t phiOut = -999.0;
-         Double_t radius = 278.;//TPC outer (vessel) = 278 cm, TOF radius (active surf.) = 378 cm;  ref. PPR.1
-         AliExternalTrackParam etp; //thanks to Andrea and Cristina
-         etp.CopyFromVTrack(track);
-         if(etp.GetXYZAt(radius, 5., pos)){
-           phiOut=TMath::ATan2(pos[1],pos[0])*TMath::RadToDeg();
-           if (phiOut<0) phiOut+= (2*TMath::Pi()*TMath::RadToDeg());
-         }
-         fComputedValue = phiOut;      
-       } else {
-         AliWarning("Cannot get phi at outer TPC radius for non-track object");
-         fComputedValue = -99.0;
+      case kV0DCA:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          fComputedValue = v0ESD->GetD(xPrimaryVertex,yPrimaryVertex,zPrimaryVertex);
+          return kTRUE;
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          fComputedValue = v0AOD->DcaV0ToPrimVertex();
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }               
+      case kDaughterDCA:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          fComputedValue = v0ESD->GetDcaV0Daughters();
+          return kTRUE;
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          fComputedValue = v0AOD->DcaV0Daughters();
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }
+      case kCosPointAng:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          fComputedValue = v0ESD->GetV0CosineOfPointingAngle();
+          return kTRUE;         
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          fComputedValue = TMath::Cos(v0AOD->OpenAngleV0());
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }
+      case kLambdaProtonPIDCut:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          // retrieve the V0 daughters
+          UInt_t lIdxPos      = (UInt_t) TMath::Abs(v0ESD->GetPindex());
+          AliESDtrack *pTrack = lESDEvent->GetTrack(lIdxPos);
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, AliPID::kProton));
+          return kTRUE;         
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          AliAODTrack *pTrack = (AliAODTrack *) (v0AOD->GetSecondaryVtx()->GetDaughter(0));
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, AliPID::kProton));
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }
+       case kAntiLambdaAntiProtonPIDCut:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          // retrieve the V0 daughters
+          UInt_t lIdxNeg      = (UInt_t) TMath::Abs(v0ESD->GetNindex());
+          AliESDtrack *nTrack = lESDEvent->GetTrack(lIdxNeg);
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(nTrack, AliPID::kProton));
+          return kTRUE;         
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          AliAODTrack *nTrack = (AliAODTrack *) (v0AOD->GetSecondaryVtx()->GetDaughter(1));
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(nTrack, AliPID::kProton));
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }
+      case kLambdaPionPIDCut:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          // retrieve the V0 daughters
+          UInt_t lIdxNeg      = (UInt_t) TMath::Abs(v0ESD->GetNindex());
+          AliESDtrack *nTrack = lESDEvent->GetTrack(lIdxNeg);
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(nTrack, AliPID::kPion));
+          return kTRUE;         
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          AliAODTrack *nTrack = (AliAODTrack *) (v0AOD->GetSecondaryVtx()->GetDaughter(1));
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(nTrack, AliPID::kPion));
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
+         return kFALSE;
+        }
+       case kAntiLambdaAntiPionPIDCut:
+         if(v0esd) {
+          AliESDv0 *v0ESD = dynamic_cast<AliESDv0 *>(v0esd);
+          // retrieve the V0 daughters
+          UInt_t lIdxPos      = (UInt_t) TMath::Abs(v0ESD->GetPindex());
+          AliESDtrack *pTrack = lESDEvent->GetTrack(lIdxPos);
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, AliPID::kPion));
+          return kTRUE;         
+        }
+        if(v0aod) {
+          AliAODv0 *v0AOD = dynamic_cast<AliAODv0 *>(v0aod);
+          AliAODTrack *pTrack = (AliAODTrack *) (v0AOD->GetSecondaryVtx()->GetDaughter(0));
+          AliPIDResponse *pid = fEvent->GetPIDResponse(); 
+          fComputedValue = TMath::Abs(pid->NumberOfSigmasTPC(pTrack, AliPID::kPion));
+          return kTRUE;
+        }
+        else {
+         fComputedValue = -999;
          return kFALSE;
-       }
-       return kTRUE;
-       
+        }
+        
+      
       default:
          AliError(Form("[%s] Invalid value type for this computation", GetName()));
          return kFALSE;
index ae47006bfa84d13192b0435cce92ee5d83b3f569..93857775d0558407e934898a679a236eeaa3a05e 100644 (file)
@@ -32,13 +32,17 @@ public:
       kTOFnsigmaP, // TOF number of sigmas proton
       kNITSclusters,  // n ITS clusters
       kNTPCclusters,  // n TPC clusters
-      kITSchi2,    // ITS chi^2
-      kTPCchi2,    // TPC chi^2
-      kDCAXY,      // DCA xy
-      kDCAZ,       // DCA z
-      kCharge,     // charge
-      kPhi,        // azimuthal angle at vertex
-      kPhiOuterTPC,// azimuthal angle at TPC outer radius
+      kITSchi2,     // ITS chi^2
+      kTPCchi2,     // TPC chi^2
+      kDCAXY,       // DCA xy
+      kDCAZ,        // DCA z
+      kV0DCA,       // V0 DCA 
+      kDaughterDCA, // DCA of V0 Daughters
+      kCosPointAng, // V0 Cosing of Pointing Angle
+      kLambdaProtonPIDCut,         //V0 - Lambda number of sigmas proton          
+      kAntiLambdaAntiProtonPIDCut, //V0 - AntiLambda number of sigmas antiproton       
+      kLambdaPionPIDCut,                 //V0 - Lambda number of sigmas pion   
+      kAntiLambdaAntiPionPIDCut,   //V0 - AntiLambda number of sigmas pion     
       kTypes
    };
 
index 4436bcbc47b9fae7023e72f0b71cc347bbe150ae..c7da47abce7f68d241de1a8d5acdc7bd909efcfa 100644 (file)
@@ -21,9 +21,9 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskSigmaStarPP
    Bool_t      isPP,
    Float_t     cutV = 10.0,
    Int_t       aodFilterBit = 5,
-   Int_t       piPIDCut = 3.0,
-   Int_t       pPIDCut = 3.0,
-   Float_t     piDCAcut = 0.05,
+   Float_t     piPIDCut = 3.0,
+   Float_t     pPIDCut = 3.0,
+   Float_t     trackDCAcut = 7.0,
    Float_t     massTol = 0.01,
    Float_t     lambdaDCA = 0.3,
    Float_t     lambdaCosPoinAn = 0.99,
@@ -49,7 +49,7 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskSigmaStarPP
    } 
 
    // create the task and configure 
-   TString taskName = Form("SigmaStar%s%s_%.1f_%d", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"),cutV,NTPCcluster);
+   TString taskName = Form("SigmaStar%s%s_%.1f_%d_%.1f_%.1f_%.1f_%.2f_%.1f_%.2f_%.1f", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"),cutV,NTPCcluster,piPIDCut,pPIDCut,trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA);
    AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
    if (!isMC && !isPP){
      Printf(Form("========== SETTING USE CENTRALITY PATCH AOD049 : %s", (aodN==49)? "yes" : "no"));
@@ -128,7 +128,7 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskSigmaStarPP
        Printf("========================== MC analysis - PID cuts not used");
    } else 
      Printf("========================== DATA analysis - PID cuts used");
-   if (!ConfigSigmaStar(task, isPP, isMC, piPIDCut, pPIDCut, aodFilterBit, piDCAcut, massTol, lambdaDCA, lambdaCosPoinAn, lambdaDaughDCA, NTPCcluster, "", cutsPair)) return 0x0;
+   if (!ConfigSigmaStar(task, isPP, isMC, piPIDCut, pPIDCut, aodFilterBit, trackDCAcut, massTol, lambdaDCA, lambdaCosPoinAn, lambdaDaughDCA, NTPCcluster, "", cutsPair)) return 0x0;
    
    //
    // -- CONTAINERS --------------------------------------------------------------------------------
@@ -137,7 +137,7 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskSigmaStarPP
    //  outputFileName += ":Rsn";
    Printf("AddAnalysisTaskSigmaStarPP - Set OutputFileName : \n %s\n", outputFileName.Data() );
    
-   AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d",outNameSuffix.Data(), cutV, NTPCcluster), 
+   AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s_%.1f_%d_%.1f_%.1f_%.1f_%.2f_%.1f_%.2f_%.1f",outNameSuffix.Data(),cutV,NTPCcluster,piPIDCut,pPIDCut,trackDCAcut,massTol,lambdaDCA,lambdaCosPoinAn,lambdaDaughDCA), 
                                                           TList::Class(), 
                                                           AliAnalysisManager::kOutputContainer, 
                                                           outputFileName);
index e9a7bbee7384d143463edfc7912db9f2aa781ab4..95b362ad5622f35fd0b28ac57810fd64219f2f3c 100644 (file)
@@ -16,7 +16,7 @@ Bool_t ConfigSigmaStar
    Float_t                 piPIDCut,
    Float_t                 pPIDCut,
    Int_t                   aodFilterBit,
-   Float_t                 piDCAcut,
+   Float_t                 trackDCAcut,
    Float_t                 massTol,
    Float_t                 lambdaDCA,
    Float_t                 lambdaCosPoinAn,
@@ -33,13 +33,17 @@ Bool_t ConfigSigmaStar
    // -- Define track cuts -------------------------------------------------------------------------
    //
 
+   TString s = ""; s+=trackDCAcut; s+="*(0.0026+0.0050/pt^1.01)";
+
+   const char *formula = s;
+
    // integrated pion cut
    AliRsnCutDaughterSigmaStar2010PP *cutPi = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStar", AliPID::kPion);
    cutPi->SetPIDCut(piPIDCut);
    cutPi->SetMinTPCcluster(NTPCcluster);
    AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
-   cutQuality->SetAODTestFilterBit(aodFilterBit);
-   cutQuality->SetDCARmax(piDCAcut);            
+   cutQuality->SetAODTestFilterBit(aodFilterBit);               
+   cutQuality->SetDCARPtFormula(formula);               
     
    // cut set
    AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionForSigmaStar", AliRsnTarget::kDaughter);
@@ -66,10 +70,10 @@ Bool_t ConfigSigmaStar
    cutLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
    cutLambda->SetMinTPCcluster(NTPCcluster);
    cutLambda->SetMaxRapidity(0.8);
+   cutLambda->SetDCARPtFormula(formula);
    cutLambda->SetAODTestFilterBit(aodFilterBit);
-   cutLambda->SetPIDCut1(pPIDCut);
-   cutLambda->SetPIDCut2(piPIDCut);
-   cutLambda->SetPIDCut3(piPIDCut);
+   cutLambda->SetPIDCutProton(pPIDCut);
+   cutLambda->SetPIDCutPion(piPIDCut);
    
    // cut set
    AliRsnCutSet *cutSetLambda = new AliRsnCutSet("setLambda", AliRsnTarget::kDaughter);
@@ -88,10 +92,10 @@ Bool_t ConfigSigmaStar
    cutAntiLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
    cutAntiLambda->SetMinTPCcluster(NTPCcluster);
    cutAntiLambda->SetMaxRapidity(0.8);
+   cutAntiLambda->SetDCARPtFormula(formula);
    cutAntiLambda->SetAODTestFilterBit(aodFilterBit);
-   cutAntiLambda->SetPIDCut1(pPIDCut);
-   cutAntiLambda->SetPIDCut2(piPIDCut);
-   cutAntiLambda->SetPIDCut3(piPIDCut);
+   cutAntiLambda->SetPIDCutProton(pPIDCut);
+   cutAntiLambda->SetPIDCutPion(piPIDCut);
    
    // cut set
    AliRsnCutSet *cutSetAntiLambda = new AliRsnCutSet("setAntiLambda", AliRsnTarget::kDaughter);
@@ -108,10 +112,8 @@ Bool_t ConfigSigmaStar
    //
    
    /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
-   /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
    /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
    /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
-   /* rapidity         */ Int_t rapID  = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
    
    //
    // -- Create all needed outputs -----------------------------------------------------------------
@@ -155,13 +157,28 @@ Bool_t ConfigSigmaStar
          out->AddAxis(imID, 800, 1.2, 2.0);
       // axis Y: transverse momentum
          out->AddAxis(ptID, 100, 0.0, 10.0);
-      // axis Z: rapidity
-         //out->AddAxis(rapID, 160, -0.8, 0.8);
         
       if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
       
     } 
    
+   AddMonitorOutput_PionDCA(cutSetPi->GetMonitorOutput());
+   AddMonitorOutput_PionPIDCut(cutSetPi->GetMonitorOutput());
+   AddMonitorOutput_PionNTPC(cutSetPi->GetMonitorOutput());
+   
+   AddMonitorOutput_LambdaMass(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDCA(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDaughterDCA(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaCosPointAngle(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaProtonPID(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaPionPID(cutSetLambda->GetMonitorOutput());
+   
+   AddMonitorOutput_LambdaMass(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDCA(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDaughterDCA(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaCosPointAngle(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaAntiProtonPID(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaAntiPionPID(cutSetAntiLambda->GetMonitorOutput());
    
    if (isMC) {
    
@@ -180,7 +197,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -195,7 +212,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -210,7 +227,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -226,7 +243,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -241,7 +258,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -257,7 +274,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -274,7 +291,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520M_TrueMC%s", suffix), mode.Data(), "MOTHER");
@@ -290,7 +307,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -308,7 +325,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520MBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
@@ -324,7 +341,7 @@ Bool_t ConfigSigmaStar
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -334,17 +351,67 @@ Bool_t ConfigSigmaStar
    return kTRUE;
 }
 
+void AddMonitorOutput_PionDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pdca=0)
+{
+
+   // PionDCA
+   AliRsnValueDaughter *axisPionDCA = new AliRsnValueDaughter("pion_dca", AliRsnValueDaughter::kDCAXY);
+   axisPionDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionDCA = new AliRsnListOutput("Pion_DCA", AliRsnListOutput::kHistoDefault);
+   outMonitorPionDCA->AddValue(axisPionDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionDCA);
+   if (pdca) pdca->AddOutput(outMonitorPionDCA);
+  
+}
+
+void AddMonitorOutput_PionPIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piPID=0)
+{
+
+   // Pion PID Cut
+   AliRsnValueDaughter *axisPionPIDCut = new AliRsnValueDaughter("pionPID", AliRsnValueDaughter::kTPCnsigmaPi);
+   axisPionPIDCut->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionPIDCut = new AliRsnListOutput("Pion_PID_Cut", AliRsnListOutput::kHistoDefault);
+   outMonitorPionPIDCut->AddValue(axisPionPIDCut);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionPIDCut);
+   if (piPID) piPID->AddOutput(outMonitorPionPIDCut);
+  
+}
+
+void AddMonitorOutput_PionNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piNTPC=0)
+{
+
+   // Pion PID Cut
+   AliRsnValueDaughter *axisPionNTPC = new AliRsnValueDaughter("pionNTPC", AliRsnValueDaughter::kNTPCclusters);
+   axisPionNTPC->SetBins(0.0,200,1);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionNTPC = new AliRsnListOutput("Pion_NTPC", AliRsnListOutput::kHistoDefault);
+   outMonitorPionNTPC->AddValue(axisPionNTPC);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionNTPC);
+   if (piNTPC) pNTPC->AddOutput(outMonitorPionNTPC);
+  
+}
 
 
-void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
+void AddMonitorOutput_LambdaMass(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 {
 
    // Mass
-   AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("m", AliRsnValueDaughter::kMass);
-   axisMass->SetBins(0.7,1.5,0.05);
+   AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("lambda_mass", AliRsnValueDaughter::kMass);
+   axisMass->SetBins(0.7,1.5,0.001);
 
    // output: 2D histogram
-   AliRsnListOutput *outMonitorM = new AliRsnListOutput("M", AliRsnListOutput::kHistoDefault);
+   AliRsnListOutput *outMonitorM = new AliRsnListOutput("Lambda_Mass", AliRsnListOutput::kHistoDefault);
    outMonitorM->AddValue(axisMass);
 
    // add outputs to loop
@@ -352,3 +419,122 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
    if (lm) lm->AddOutput(outMonitorM);
   
 }
+
+void AddMonitorOutput_LambdaDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ldca=0)
+{
+
+   // Lambda DCA
+   AliRsnValueDaughter *axisLambdaDCA = new AliRsnValueDaughter("lambda_dca", AliRsnValueDaughter::kV0DCA);
+   axisLambdaDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaDCA = new AliRsnListOutput("Lambda_DCA", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaDCA->AddValue(axisLambdaDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaDCA);
+   if (ldca) ldca->AddOutput(outMonitorLambdaDCA);
+  
+}
+
+void AddMonitorOutput_LambdaDaughterDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ldaugdca=0)
+{
+
+   // Lambda Daughter DCA
+   AliRsnValueDaughter *axisLambdaDDCA = new AliRsnValueDaughter("lambda_daughterDCA", AliRsnValueDaughter::kDaughterDCA);
+   axisLambdaDDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaDDCA = new AliRsnListOutput("Lambda_DaughterDCA", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaDDCA->AddValue(axisLambdaDDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaDDCA);
+   if (ldaugdca) ldaugdca->AddOutput(outMonitorLambdaDDCA);
+  
+}
+
+void AddMonitorOutput_LambdaCosPointAngle(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lcpa=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaCPA = new AliRsnValueDaughter("lambda_cospointang", AliRsnValueDaughter::kCosPointAng);
+   axisLambdaCPA->SetBins(0.97,1,0.0001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaCPA = new AliRsnListOutput("Lambda_CosineOfPointingAngle", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaCPA->AddValue(axisLambdaCPA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaCPA);
+   if (lcpa) lcpa->AddOutput(outMonitorLambdaCPA);
+  
+}
+
+void AddMonitorOutput_LambdaProtonPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lpPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaProtonPID = new AliRsnValueDaughter("lambda_protonPID", AliRsnValueDaughter::kLambdaProtonPIDCut);
+   axisLambdaProtonPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaProtonPID = new AliRsnListOutput("Lambda_ProtonPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaProtonPID->AddValue(axisLambdaProtonPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaProtonPID);
+   if (lpPID) lpPID->AddOutput(outMonitorLambdaProtonPID);
+  
+}
+
+void AddMonitorOutput_LambdaPionPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lpiPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaPionPID = new AliRsnValueDaughter("lambda_pionPID", AliRsnValueDaughter::kLambdaPionPIDCut);
+   axisLambdaPionPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaPionPID = new AliRsnListOutput("Lambda_PionPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaPionPID->AddValue(axisLambdaPionPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaPionPID);
+   if (lpiPID) lpiPID->AddOutput(outMonitorLambdaPionPID);
+  
+}
+
+void AddMonitorOutput_LambdaAntiProtonPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lapPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaAntiProtonPID = new AliRsnValueDaughter("lambda_antiprotonPID", AliRsnValueDaughter::kAntiLambdaAntiProtonPIDCut);
+   axisLambdaAntiProtonPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaAntiProtonPID = new AliRsnListOutput("Lambda_AntiProtonPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaAntiProtonPID->AddValue(axisLambdaAntiProtonPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaAntiProtonPID);
+   if (lapPID) lapPID->AddOutput(outMonitorLambdaAntiProtonPID);
+  
+}
+
+void AddMonitorOutput_LambdaAntiPionPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lapiPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaAntiPionPID = new AliRsnValueDaughter("lambda_antipionPID", AliRsnValueDaughter::kAntiLambdaAntiPionPIDCut);
+   axisLambdaAntiPionPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaAntiPionPID = new AliRsnListOutput("Lambda_AntiPionPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaAntiPionPID->AddValue(axisLambdaAntiPionPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaAntiPionPID);
+   if (lapiPID) lpiPID->AddOutput(outMonitorLambdaAntiPionPID);
+  
+}
index a0a5a5f5282a8be350b170ecf68a714e7b095502..531510027adf6b310eabfe30b7d21101ad75519e 100644 (file)
@@ -16,7 +16,7 @@ Bool_t ConfigSigmaStarPbPb
    Float_t                 piPIDCut,
    Float_t                 pPIDCut,
    Int_t                   aodFilterBit,
-   Float_t                 piDCAcut,
+   Float_t                 trackDCAcut,
    Float_t                 massTol,
    Float_t                 lambdaDCA,
    Float_t                 lambdaCosPoinAn,
@@ -33,13 +33,17 @@ Bool_t ConfigSigmaStarPbPb
    // -- Define track cuts -------------------------------------------------------------------------
    //
 
+   TString s = ""; s+=trackDCAcut; s+="*(0.0026+0.0050/pt^1.01)";
+
+   const char *formula = s;
+
    // integrated pion cut
    AliRsnCutDaughterSigmaStar2010PP *cutPi = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStar", AliPID::kPion);
    cutPi->SetPIDCut(piPIDCut);
    cutPi->SetMinTPCcluster(NTPCcluster);
    AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
    cutQuality->SetAODTestFilterBit(aodFilterBit);
-   cutQuality->SetDCARmax(piDCAcut);            
+   cutQuality->SetDCARPtFormula(formula);               
     
    // cut set
    AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionForSigmaStar", AliRsnTarget::kDaughter);
@@ -66,10 +70,10 @@ Bool_t ConfigSigmaStarPbPb
    cutLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
    cutLambda->SetMinTPCcluster(NTPCcluster);
    cutLambda->SetMaxRapidity(0.8);
+   cutLambda->SetDCARPtFormula(formula);
    cutLambda->SetAODTestFilterBit(aodFilterBit);
-   cutLambda->SetPIDCut1(pPIDCut);
-   cutLambda->SetPIDCut2(piPIDCut);
-   cutLambda->SetPIDCut3(piPIDCut);
+   cutLambda->SetPIDCutProton(pPIDCut);
+   cutLambda->SetPIDCutPion(piPIDCut);
    
    // cut set
    AliRsnCutSet *cutSetLambda = new AliRsnCutSet("setLambda", AliRsnTarget::kDaughter);
@@ -88,10 +92,10 @@ Bool_t ConfigSigmaStarPbPb
    cutAntiLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
    cutAntiLambda->SetMinTPCcluster(NTPCcluster);
    cutAntiLambda->SetMaxRapidity(0.8);
+   cutAntiLambda->SetDCARPtFormula(formula);
    cutAntiLambda->SetAODTestFilterBit(aodFilterBit);
-   cutAntiLambda->SetPIDCut1(pPIDCut);
-   cutAntiLambda->SetPIDCut2(piPIDCut);
-   cutAntiLambda->SetPIDCut3(piPIDCut);
+   cutAntiLambda->SetPIDCutProton(pPIDCut);
+   cutAntiLambda->SetPIDCutPion(piPIDCut);
    
    // cut set
    AliRsnCutSet *cutSetAntiLambda = new AliRsnCutSet("setAntiLambda", AliRsnTarget::kDaughter);
@@ -108,10 +112,8 @@ Bool_t ConfigSigmaStarPbPb
    //
    
    /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
-   /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
    /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
    /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
-   /* rapidity         */ Int_t rapID  = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
    
    //
    // -- Create all needed outputs -----------------------------------------------------------------
@@ -155,14 +157,29 @@ Bool_t ConfigSigmaStarPbPb
          out->AddAxis(imID, 800, 1.2, 2.0);
       // axis Y: transverse momentum
          out->AddAxis(ptID, 100, 0.0, 10.0);
-      // axis Z: rapidity
-         //out->AddAxis(rapID, 160, -0.8, 0.8);
         
       if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
       
     } 
     
-   
+   AddMonitorOutput_PionDCA(cutSetPi->GetMonitorOutput());
+   AddMonitorOutput_PionPIDCut(cutSetPi->GetMonitorOutput());
+   AddMonitorOutput_PionNTPC(cutSetPi->GetMonitorOutput());
+   
+   AddMonitorOutput_LambdaMass(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDCA(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDaughterDCA(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaCosPointAngle(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaProtonPID(cutSetLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaPionPID(cutSetLambda->GetMonitorOutput());
+   
+   AddMonitorOutput_LambdaMass(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDCA(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaDaughterDCA(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaCosPointAngle(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaAntiProtonPID(cutSetAntiLambda->GetMonitorOutput());
+   AddMonitorOutput_LambdaAntiPionPID(cutSetAntiLambda->GetMonitorOutput());
+    
    if (isMC) {
    
    TString mode = "HIST";
@@ -180,7 +197,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -195,7 +212,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -210,7 +227,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -226,7 +243,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    // create output
@@ -241,7 +258,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -257,7 +274,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -274,7 +291,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520M_TrueMC%s", suffix), mode.Data(), "MOTHER");
@@ -290,7 +307,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -308,7 +325,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520MBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
@@ -324,7 +341,7 @@ Bool_t ConfigSigmaStarPbPb
    // binnings
    out->AddAxis(imID, 800, 1.2, 2.0);
    out->AddAxis(ptID, 100, 0.0, 10.0);
-   //out->AddAxis(rapID, 160, -0.8, 0.8);
+
    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
    
    
@@ -334,17 +351,67 @@ Bool_t ConfigSigmaStarPbPb
    return kTRUE;
 }
 
+void AddMonitorOutput_PionDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pdca=0)
+{
+
+   // PionDCA
+   AliRsnValueDaughter *axisPionDCA = new AliRsnValueDaughter("pion_dca", AliRsnValueDaughter::kDCAXY);
+   axisPionDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionDCA = new AliRsnListOutput("Pion_DCA", AliRsnListOutput::kHistoDefault);
+   outMonitorPionDCA->AddValue(axisPionDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionDCA);
+   if (pdca) pdca->AddOutput(outMonitorPionDCA);
+  
+}
+
+void AddMonitorOutput_PionPIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piPID=0)
+{
+
+   // Pion PID Cut
+   AliRsnValueDaughter *axisPionPIDCut = new AliRsnValueDaughter("pionPID", AliRsnValueDaughter::kTPCnsigmaPi);
+   axisPionPIDCut->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionPIDCut = new AliRsnListOutput("Pion_PID_Cut", AliRsnListOutput::kHistoDefault);
+   outMonitorPionPIDCut->AddValue(axisPionPIDCut);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionPIDCut);
+   if (piPID) piPID->AddOutput(outMonitorPionPIDCut);
+  
+}
+
+void AddMonitorOutput_PionNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piNTPC=0)
+{
+
+   // Pion PID Cut
+   AliRsnValueDaughter *axisPionNTPC = new AliRsnValueDaughter("pionNTPC", AliRsnValueDaughter::kNTPCclusters);
+   axisPionNTPC->SetBins(0.0,200,1);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorPionNTPC = new AliRsnListOutput("Pion_NTPC", AliRsnListOutput::kHistoDefault);
+   outMonitorPionNTPC->AddValue(axisPionNTPC);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorPionNTPC);
+   if (piNTPC) pNTPC->AddOutput(outMonitorPionNTPC);
+  
+}
 
 
-void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
+void AddMonitorOutput_LambdaMass(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 {
 
    // Mass
-   AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("m", AliRsnValueDaughter::kMass);
-   axisMass->SetBins(0.7,1.5,0.05);
+   AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("lambda_mass", AliRsnValueDaughter::kMass);
+   axisMass->SetBins(0.7,1.5,0.001);
 
    // output: 2D histogram
-   AliRsnListOutput *outMonitorM = new AliRsnListOutput("M", AliRsnListOutput::kHistoDefault);
+   AliRsnListOutput *outMonitorM = new AliRsnListOutput("Lambda_Mass", AliRsnListOutput::kHistoDefault);
    outMonitorM->AddValue(axisMass);
 
    // add outputs to loop
@@ -352,3 +419,122 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
    if (lm) lm->AddOutput(outMonitorM);
   
 }
+
+void AddMonitorOutput_LambdaDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ldca=0)
+{
+
+   // Lambda DCA
+   AliRsnValueDaughter *axisLambdaDCA = new AliRsnValueDaughter("lambda_dca", AliRsnValueDaughter::kV0DCA);
+   axisLambdaDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaDCA = new AliRsnListOutput("Lambda_DCA", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaDCA->AddValue(axisLambdaDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaDCA);
+   if (ldca) ldca->AddOutput(outMonitorLambdaDCA);
+  
+}
+
+void AddMonitorOutput_LambdaDaughterDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ldaugdca=0)
+{
+
+   // Lambda Daughter DCA
+   AliRsnValueDaughter *axisLambdaDDCA = new AliRsnValueDaughter("lambda_daughterDCA", AliRsnValueDaughter::kDaughterDCA);
+   axisLambdaDDCA->SetBins(0.0,1,0.001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaDDCA = new AliRsnListOutput("Lambda_DaughterDCA", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaDDCA->AddValue(axisLambdaDDCA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaDDCA);
+   if (ldaugdca) ldaugdca->AddOutput(outMonitorLambdaDDCA);
+  
+}
+
+void AddMonitorOutput_LambdaCosPointAngle(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lcpa=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaCPA = new AliRsnValueDaughter("lambda_cospointang", AliRsnValueDaughter::kCosPointAng);
+   axisLambdaCPA->SetBins(0.97,1,0.0001);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaCPA = new AliRsnListOutput("Lambda_CosineOfPointingAngle", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaCPA->AddValue(axisLambdaCPA);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaCPA);
+   if (lcpa) lcpa->AddOutput(outMonitorLambdaCPA);
+  
+}
+
+void AddMonitorOutput_LambdaProtonPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lpPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaProtonPID = new AliRsnValueDaughter("lambda_protonPID", AliRsnValueDaughter::kLambdaProtonPIDCut);
+   axisLambdaProtonPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaProtonPID = new AliRsnListOutput("Lambda_ProtonPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaProtonPID->AddValue(axisLambdaProtonPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaProtonPID);
+   if (lpPID) lpPID->AddOutput(outMonitorLambdaProtonPID);
+  
+}
+
+void AddMonitorOutput_LambdaPionPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lpiPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaPionPID = new AliRsnValueDaughter("lambda_pionPID", AliRsnValueDaughter::kLambdaPionPIDCut);
+   axisLambdaPionPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaPionPID = new AliRsnListOutput("Lambda_PionPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaPionPID->AddValue(axisLambdaPionPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaPionPID);
+   if (lpiPID) lpiPID->AddOutput(outMonitorLambdaPionPID);
+  
+}
+
+void AddMonitorOutput_LambdaAntiProtonPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lapPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaAntiProtonPID = new AliRsnValueDaughter("lambda_antiprotonPID", AliRsnValueDaughter::kAntiLambdaAntiProtonPIDCut);
+   axisLambdaAntiProtonPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaAntiProtonPID = new AliRsnListOutput("Lambda_AntiProtonPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaAntiProtonPID->AddValue(axisLambdaAntiProtonPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaAntiProtonPID);
+   if (lapPID) lapPID->AddOutput(outMonitorLambdaAntiProtonPID);
+  
+}
+
+void AddMonitorOutput_LambdaAntiPionPID(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lapiPID=0)
+{
+
+   // Lambda Cosine of the Pointing Angle
+   AliRsnValueDaughter *axisLambdaAntiPionPID = new AliRsnValueDaughter("lambda_antipionPID", AliRsnValueDaughter::kAntiLambdaAntiPionPIDCut);
+   axisLambdaAntiPionPID->SetBins(0.0,5,0.01);
+
+   // output: 2D histogram
+   AliRsnListOutput *outMonitorLambdaAntiPionPID = new AliRsnListOutput("Lambda_AntiPionPID", AliRsnListOutput::kHistoDefault);
+   outMonitorLambdaAntiPionPID->AddValue(axisLambdaAntiPionPID);
+
+   // add outputs to loop
+   if (mon) mon->Add(outMonitorLambdaAntiPionPID);
+   if (lapiPID) lpiPID->AddOutput(outMonitorLambdaAntiPionPID);
+  
+}