Bugfixes in quality track cuts
authorpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Jan 2011 10:33:43 +0000 (10:33 +0000)
committerpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 Jan 2011 10:33:43 +0000 (10:33 +0000)
PWG2/RESONANCES/AliRsnCutTrackQuality.cxx
PWG2/RESONANCES/AliRsnCutTrackQuality.h

index 0fae0f83df87b9ea1bb83d84959b213fd32541bd..3e60683fd46c7585b71d38fa0695562e17f7b373 100644 (file)
@@ -34,7 +34,7 @@ ClassImp(AliRsnCutTrackQuality)
 //_________________________________________________________________________________________________
 AliRsnCutTrackQuality::AliRsnCutTrackQuality(const char *name) :
   AliRsnCut(name, AliRsnCut::kDaughter, 0.0, 0.0),
-  fFlagsOn(0xFFFFFFFF),
+  fFlagsOn(0x0),
   fFlagsOff(0x0),
   fRejectKinkDaughter(kFALSE),
   fDCARfixed(kTRUE),
@@ -122,7 +122,7 @@ void AliRsnCutTrackQuality::DisableAll()
 // Disable all cuts
 //
   
-  fFlagsOn = 0xFFFFFFFF;
+  fFlagsOn = 0x0;
   fFlagsOff = 0x0;
   fRejectKinkDaughter = kFALSE;
   fDCARfixed = kTRUE;
@@ -153,7 +153,10 @@ Bool_t AliRsnCutTrackQuality::IsSelected(TObject *object)
   // coherence check
   if (!TargetOK(object)) return kFALSE;
   
-  // status is checked in the same way for all tracks
+  // status is checked in the same way for all tracks, using AliVTrack
+  // as a convention, if a the collection of 'on' flags is '0x0', it 
+  // is assumed that no flags are required, and this check is skipped;
+  // for the collection of 'off' flags this is not needed
   AliVTrack *vtrack = dynamic_cast<AliVTrack*>(fDaughter->GetRef());
   if (!vtrack)
   {
@@ -163,7 +166,7 @@ Bool_t AliRsnCutTrackQuality::IsSelected(TObject *object)
   ULong_t status   = (ULong_t)vtrack->GetStatus();
   ULong_t checkOn  = status & fFlagsOn;
   ULong_t checkOff = status & fFlagsOff;
-  if (checkOn == 0)
+  if (fFlagsOn != 0x0 && checkOn != fFlagsOn)
   {
     AliDebug(AliLog::kDebug + 2, Form("Not all required flags are present: required %lx, track has %lx", fFlagsOn, status));
     return kFALSE;
@@ -209,6 +212,10 @@ Bool_t AliRsnCutTrackQuality::CheckESD(AliESDtrack *track)
   cuts.SetPtRange (fPt[0], fPt[1]);
   cuts.SetEtaRange(fEta[0], fEta[1]);
   
+  // status flags
+  //if ((fFlagsOn & AliESDtrack::kITSrefit) != 0) cuts.SetRequireITSRefit(kTRUE);
+  //if ((fFlagsOn & AliESDtrack::kTPCrefit) != 0) cuts.SetRequireTPCRefit(kTRUE);
+  
   // transverse DCA cuts
   if (fDCARfixed)
     cuts.SetMaxDCAToVertexXY(fDCARmax);
@@ -217,11 +224,11 @@ Bool_t AliRsnCutTrackQuality::CheckESD(AliESDtrack *track)
     
   // longitudinal DCA cuts
   if (fDCAZfixed)
-    cuts.SetMaxDCAToVertexZ(fDCARmax);
+    cuts.SetMaxDCAToVertexZ(fDCAZmax);
   else
     cuts.SetMaxDCAToVertexZPtDep(fDCAZptFormula.Data());
     
-  // these options are always disabled in currend version
+  // these options are always disabled in current version
   cuts.SetDCAToVertex2D(kFALSE);
   cuts.SetRequireSigmaToVertex(kFALSE);
   
index 75a2ec262b51a0490ba745aa9e933e3e0bcb3f9a..9a6f3e70eff8b9ae09c3af8676ac8ff9e43b8675 100644 (file)
@@ -36,9 +36,9 @@ class AliRsnCutTrackQuality : public AliRsnCut
     void      SetPtRange(Double_t a, Double_t b)    {fPt[0] = TMath::Min(a, b); fPt[1] = TMath::Max(a, b);}
     void      SetEtaRange(Double_t a, Double_t b)   {fEta[0] = TMath::Min(a, b); fEta[1] = TMath::Max(a, b);}
     
-    void      SetDCARPtFormula(const char *formula) {fDCARptFormula = formula; fDCARptFormula.ReplaceAll("pt", "x"); fDCARfixed = kFALSE;}
+    void      SetDCARPtFormula(const char *formula) {fDCARptFormula = formula; fDCARfixed = kFALSE;}
     void      SetDCARmax(Double_t value)            {fDCARmax = value; fDCARptFormula = ""; fDCARfixed = kTRUE;}
-    void      SetDCAZPtFormula(const char *formula) {fDCAZptFormula = formula; fDCAZptFormula.ReplaceAll("pt", "x"); fDCAZfixed = kFALSE;}
+    void      SetDCAZPtFormula(const char *formula) {fDCAZptFormula = formula; fDCAZfixed = kFALSE;}
     void      SetDCAZmax(Double_t value)            {fDCAZmax = value; fDCAZptFormula = ""; fDCAZfixed = kTRUE;}
     
     void      SetSPDminNClusters(Int_t value)       {fSPDminNClusters = value;}