Fix for PAR library
authorpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Sep 2011 07:55:21 +0000 (07:55 +0000)
committerpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Sep 2011 07:55:21 +0000 (07:55 +0000)
PWG2/PWG2resonancesLinkDef.h
PWG2/RESONANCES/AliRsnCutDaughterKStar2010PP.cxx
PWG2/RESONANCES/AliRsnCutDaughterKStar2010PP.h
PWG2/RESONANCES/AliRsnCutKaonForPhi2010PP.cxx
PWG2/RESONANCES/AliRsnCutPIDNSigma.cxx

index cb4486c..ae6de6d 100644 (file)
@@ -23,6 +23,7 @@
 #pragma link C++ class AliRsnCutPIDITS+;
 #pragma link C++ class AliRsnCutPIDTPC+;
 #pragma link C++ class AliRsnCutPIDTOF+;
+#pragma link C++ class AliRsnCutPIDNSigma::AliRsnPIDRange+;
 #pragma link C++ class AliRsnCutPIDNSigma+;
 #pragma link C++ class AliRsnCutMomentumComparison+;
 #pragma link C++ class AliRsnCutKaonForPhi2010+;
index d21471d..2c9ec05 100644 (file)
@@ -17,6 +17,7 @@ ClassImp(AliRsnCutDaughterKStar2010PP)
 //__________________________________________________________________________________________________
 AliRsnCutDaughterKStar2010PP::AliRsnCutDaughterKStar2010PP(const char *name, AliPID::EParticleType pid) :
    AliRsnCut(name, AliRsnTarget::kDaughter),
+   fNoPID(kFALSE),
    fPID(pid),
    fCutQuality(Form("%sQuality", name))
 {
@@ -49,11 +50,8 @@ Bool_t AliRsnCutDaughterKStar2010PP::IsSelected(TObject *obj)
    if (!TargetOK(obj)) return kFALSE;
    
    // check track
-   AliVTrack *track = fDaughter->Ref2Vtrack();
-   if (!track) {
-      if (!fDaughter->GetRef()) AliWarning("NULL ref");
-      return kFALSE;
-   }
+   AliVTrack *track = dynamic_cast<AliVTrack*>(fDaughter->GetRef());
+   if (!track) return kFALSE;
    
    // check flags
    if ((track->GetStatus() & AliESDtrack::kTPCin   ) == 0) return kFALSE;
@@ -63,6 +61,9 @@ Bool_t AliRsnCutDaughterKStar2010PP::IsSelected(TObject *obj)
    // quality
    if (!fCutQuality.IsSelected(obj)) return kFALSE;
    
+   // if no PID is required, accept
+   if (fNoPID) return kTRUE;
+   
    // check initialization of PID object
    AliPIDResponse *pid = fEvent->GetPIDResponse();
    if (!pid) {
@@ -76,7 +77,7 @@ Bool_t AliRsnCutDaughterKStar2010PP::IsSelected(TObject *obj)
    Double_t pTPC   = track->GetTPCmomentum();
    Double_t p      = track->P();
    Double_t nsTPC  = TMath::Abs(pid->NumberOfSigmasTPC(track, fPID));
-   Double_t nsTOF  = TMath::Abs(pid->NumberOfSigmasTOF(track, fPID));
+   Double_t nsTOF  = isTOF ? TMath::Abs(pid->NumberOfSigmasTOF(track, fPID)) : 1E20;
    Double_t maxTPC = 1E20;
    Double_t maxTOF = 1E20;
    
@@ -89,21 +90,25 @@ Bool_t AliRsnCutDaughterKStar2010PP::IsSelected(TObject *obj)
       return (nsTOF <= maxTOF);
    } else {
       // TPC: 
-      // below 350 MeV: 5sigma
-      // between 350 and 500 MeV: 3sigma
-      // pions above 500 MeV: 2sigma
+      // all   below   350         MeV: 5sigma
+      // all   between 350 and 500 MeV: 3sigma
+      // pions above   500         MeV: 2sigma
       // kaons between 500 and 700 MeV: 2sigma
-      // kaons above 700 MeV: rejected
+      // kaons above   700         MeV: rejected
       if (pTPC <= 0.35) 
          maxTPC = 5.0;
-      else if (pTPC <= 0.5)
+      else if (pTPC > 0.35 && 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;
+      else {  
+         if (fPID == AliPID::kPion) 
+            maxTPC = 2.0;
+         else if (fPID == AliPID::kKaon) {
+            if (pTPC <= 0.7)
+               maxTPC = 2.0;
+            else
+               return kFALSE;
+         }
+      }
       return (nsTPC <= maxTPC);
    }
 }
index 321dcc6..b9c7f1b 100644 (file)
@@ -19,6 +19,8 @@ public:
    AliRsnCutDaughterKStar2010PP(const char *name = "", AliPID::EParticleType pid = AliPID::kPion);
    virtual ~AliRsnCutDaughterKStar2010PP() { }
    
+   void                   SetNoPID(Bool_t yn = kTRUE)        {fNoPID = yn;}
+   
    void                   SetPID(AliPID::EParticleType type) {fPID = type;}
    AliRsnCutTrackQuality *CutQuality()                       {return &fCutQuality;}
    Bool_t                 MatchTOF(const AliVTrack *vtrack);
@@ -26,6 +28,8 @@ public:
 
 private:
 
+   Bool_t                fNoPID;            // flag to switch off PID check
+   
    AliPID::EParticleType fPID;              // PID for track
    AliRsnCutTrackQuality fCutQuality;       // track quality cut
 
index 4b6458c..e983a6f 100644 (file)
@@ -127,7 +127,8 @@ Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj)
    // PID TPC :
    // depends on momentum
    // and if local PID object is initialized, it is used instead of that got from manager
-   Double_t mom = (Double_t)TMath::Abs(track->GetTPCmomentum());
+   Double_t mom = track->GetTPCmomentum();
+   mom = TMath::Abs(mom);
    if (mom < fLimitTPC) 
       SetRangeD(0.0, fNSigmaTPCLow);
    else
index ebbb055..3b0f6a2 100644 (file)
@@ -22,8 +22,8 @@
 
 #include "AliRsnCutPIDNSigma.h"
 
-ClassImp(AliRsnCutPIDNSigma)
 ClassImp(AliRsnCutPIDNSigma::AliRsnPIDRange)
+ClassImp(AliRsnCutPIDNSigma)
 
 //_________________________________________________________________________________________________
 AliRsnCutPIDNSigma::AliRsnCutPIDNSigma() :