Add possibility to apply a sharp (tracker) pt cut corresponding to the trigger pt...
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 27 Jan 2012 13:44:08 +0000 (13:44 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 27 Jan 2012 13:44:08 +0000 (13:44 +0000)
PWG/muon/AliMuonTrackCuts.cxx
PWG/muon/AliMuonTrackCuts.h

index 0ed30d7..cbba7db 100644 (file)
@@ -29,6 +29,7 @@
 #include "AliVParticle.h"
 #include "AliESDMuonTrack.h"
 #include "AliAODTrack.h"
+#include "AliAnalysisManager.h"
 
 /// \cond CLASSIMP
 ClassImp(AliMuonTrackCuts) // Class implementation in ROOT context
@@ -129,7 +130,7 @@ Bool_t AliMuonTrackCuts::StreamParameters( Int_t runNumber,  Int_t runMax )
     }
   }
 
-  TString filename = "$ALICE_ROOT/OADB/PWG3/MuonTrackCuts.root";
+  TString filename = Form("%s/PWG3/MuonTrackCuts.root",AliAnalysisManager::GetOADBPath());
   if ( fIsMC ) filename.ReplaceAll(".root", "_MC.root");
 
   TString parNames[kNParameters];
@@ -143,6 +144,9 @@ Bool_t AliMuonTrackCuts::StreamParameters( Int_t runNumber,  Int_t runMax )
   parNames[kNSigmaPdcaCut]  = "NSigmaPdcaCut";
   parNames[kChi2NormCut]    = "Chi2NormCut";
   parNames[kRelPResolution] = "RelPResolution";
+  parNames[kSharpPtApt]     = "SharpPtApt";
+  parNames[kSharpPtLpt]     = "SharpPtLpt";
+  parNames[kSharpPtHpt]     = "SharpPtHpt";
 
   TObjArray* paramList = 0x0;
 
@@ -264,6 +268,8 @@ UInt_t AliMuonTrackCuts::GetSelectionMask( const TObject* obj )
   if ( matchTrig >= 1 ) selectionMask |= kMuMatchApt;
   if ( matchTrig >= 2 ) selectionMask |= kMuMatchLpt;
   if ( matchTrig >= 3 ) selectionMask |= kMuMatchHpt;
+  
+  if ( track->Pt() >= GetSharpPtCut( matchTrig-1, kFALSE ) ) selectionMask |= kMuSharpPtCut;
 
   Double_t chi2norm = ( fIsESD ) ? ((AliESDMuonTrack*)track)->GetNormalizedChi2() : ((AliAODTrack*)track)->Chi2perNDF();
   if ( chi2norm < GetChi2NormCut() ) selectionMask |= kMuTrackChiSquare;
@@ -479,6 +485,42 @@ Double_t AliMuonTrackCuts::GetSlopeResolution () const
 }
 
 //________________________________________________________________________
+void AliMuonTrackCuts::SetSharpPtCut ( Int_t trigPtCut, Double_t ptCutValue )
+{
+  /// Set sharp tracker cut matching the trigger level
+  /// trigPtCut can be 0 (Apt), 1 (Lpt) or 2 (Hpt)
+  Int_t ipar = -1;
+  switch ( trigPtCut ) {
+    case 0:
+      ipar = kSharpPtApt;
+      break;
+    case 1:
+      ipar = kSharpPtLpt;
+      break;
+    case 2:
+      ipar = kSharpPtHpt;
+      break;
+    default:
+      AliError("Allowed values for trigPtCut are 0 (Apt), 1 (Lpt), 2 (Hpt)");
+      return;
+  }
+  SetParameter(ipar,ptCutValue);
+}
+
+//________________________________________________________________________
+Double_t AliMuonTrackCuts::GetSharpPtCut ( Int_t trigPtCut, Bool_t warn ) const
+{
+  /// Get sharp tracker cut matching the trigger level
+  /// trigPtCut can be 0 (Apt), 1 (Lpt) or 2 (Hpt)
+  if ( trigPtCut < 0 || trigPtCut > 2 ) {
+    if ( warn ) AliError("Allowed values for trigPtCut are 0 (Apt), 1 (Lpt), 2 (Hpt)");
+    return 0.;
+  }
+  Int_t ipar = kSharpPtApt + trigPtCut;
+  return fParameters[ipar];
+}
+
+//________________________________________________________________________
 void AliMuonTrackCuts::SetDefaultFilterMask ()
 {
   /// Standard cuts for single muon
@@ -505,6 +547,7 @@ void AliMuonTrackCuts::Print(Option_t* option) const
     if ( filterMask & kMuMatchLpt ) printf("  match Lpt\n");
     if ( filterMask & kMuMatchHpt ) printf("  match Hpt\n");
     if ( filterMask & kMuTrackChiSquare ) printf("  Chi2 cut on track\n");
+    if ( filterMask & kMuSharpPtCut ) printf("  sharp tracker pt cut matching trig. pt cut\n");
     printf(" ******************** \n");
   }
   if ( sopt.Contains("param") ) {
@@ -516,6 +559,7 @@ void AliMuonTrackCuts::Print(Option_t* option) const
     printf("  Cut on track chi2/NDF: %g\n", fParameters[kChi2NormCut]);
     printf("  Momentum resolution: %g\n", fParameters[kRelPResolution]);
     printf("  Slope resolution: %g\n", fParameters[kSlopeResolution]);
+    printf("  Sharp pt cut: %g (Apt)  %g (Lpt)  %g (Hpt)\n", fParameters[kSharpPtApt], fParameters[kSharpPtLpt], fParameters[kSharpPtHpt]);
     printf(" ********************************\n");
   }
 }
index ed0ba88..cd84c57 100644 (file)
@@ -20,6 +20,7 @@ class AliMuonTrackCuts : public AliAnalysisCuts
     kMuMatchLpt = BIT(4),
     kMuMatchHpt = BIT(5),
     kMuTrackChiSquare = BIT(6),
+    kMuSharpPtCut = BIT(7)
   };
 
   AliMuonTrackCuts();
@@ -62,6 +63,9 @@ class AliMuonTrackCuts : public AliAnalysisCuts
     kChi2NormCut,     ///< Cut on the normalized chi2 of track
     kRelPResolution,  ///< Relative momentum resolution
     kSlopeResolution, ///< Slope resolution
+    kSharpPtApt,      ///< Sharp tracker pt cut for Apt
+    kSharpPtLpt,      ///< Sharp tracker pt cut for Lpt
+    kSharpPtHpt,      ///< Sharp tracker pt cut for Hpt
     kNParameters      ///< Total number of parameters
   };
 
@@ -85,6 +89,9 @@ class AliMuonTrackCuts : public AliAnalysisCuts
   
   void SetSlopeResolution ( Double_t slopeResolution );
   Double_t GetSlopeResolution () const;
+  
+  void SetSharpPtCut ( Int_t trigPtCut, Double_t ptCutValue );
+  Double_t GetSharpPtCut ( Int_t trigPtCut, Bool_t warn = kTRUE ) const;
 
   Bool_t StreamParameters ( Int_t runNumber, Int_t maxRun );