added error messages when task does not post data in UserCreateOutputObjects for...
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDpidCuts.h
index c88cb5b..d7c9e52 100644 (file)
-#ifndef ALIESDPIDCUTS_H
-#define ALIESDPIDCUTS_H
-
-#ifndef ALIANALYSISCUTS_H
-#include "AliAnalysisCuts.h"
-#endif
-
-#ifndef ALIPID_H
-#include "AliPID.h"
-#endif
-
-class TCollection;
-class TH1F;
-class TH1I;
-class TH2I;
-class TList;
-class AliESDtrack;
-class AliESDEvent;
-class AliESDpid;
-
-class AliESDpidCuts : public AliAnalysisCuts{
-  enum{
-    kHasHistograms = BIT(17)
-  };
-  public: 
-    AliESDpidCuts(const Char_t *name = "AliESDpidCuts", const Char_t *title = "");
-    AliESDpidCuts(const AliESDpidCuts &ref);  // Copy constructor
-    AliESDpidCuts &operator=(const AliESDpidCuts &ref);
-    virtual ~AliESDpidCuts();
-
-    virtual void Copy(TObject &c) const;
-    virtual Long64_t Merge(TCollection *coll);
-
-    Bool_t HasHistograms() const { return TestBit(kHasHistograms); }
-    void DefineHistograms(Color_t color = kRed);
-    void DrawHistograms();
-    void SaveHistograms(const Char_t *location = NULL);
-    virtual Bool_t IsSelected(TObject *track, TObject *event);
-    //virtual Bool_t IsSelected(TList *) { return kTRUE; }
-    virtual Bool_t AcceptTrack(const AliESDtrack *track, const AliESDEvent *event);
-    
-    void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; }
-    inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);
-    inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);
-    inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);
-    inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);
-    void SetMinMomentumTOF(Float_t mom) { fMinMomentumTOF = mom; }
-  
-  protected:
-    static const Int_t kNcuts;                      // Number of Cuts
-    AliESDpid *fESDpid;                             //! PID helper (n-sigma-cut)
-    Char_t  fTPCsigmaCutRequired;                   // Sigma cut Requirement for TPC and Particle Species
-    Char_t  fTOFsigmaCutRequired;                   // Sigma cut Requirement for TOF and Particle Species
-    Float_t fCutTPCnSigma[AliPID::kSPECIES * 2];    // Species dependent cut on the distance to the TPC dE/dx line
-    Float_t fCutTOFnSigma[AliPID::kSPECIES];        // Species dependent cut on the distance to the TOF calculated time of flight line
-    Float_t fCutTPCclusterRatio;                    // Cut on Ratio of found clusters with repect to findable clusters in the TPC
-    Float_t fMinMomentumTOF;                        // Apply TOF PID only above a certain momentum
-
-    //------------------------------------------
-    // QA histograms
-    TH1I *fHcutStatistics;                       // Cut Statistics
-    TH2I *fHcutCorrelation;                      // Cut Correlation
-    TH1F *fHclusterRatio[2];                     // TPC cluster Ratio
-    TH1F *fHnSigmaTPC[AliPID::kSPECIES][2];      // TPC n-sigma cut
-    TH1F *fHnSigmaTOF[AliPID::kSPECIES][2];      // TOF n-sigma cut
-    //------------------------------------------
-    
-    ClassDef(AliESDpidCuts, 2)
-};
-
-//_____________________________________________________________________
-void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ 
-  //
-  // symmetric sigma cut for TPC PID
-  //
-  fCutTPCnSigma[itype * 2]      = -nSigma;
-  fCutTPCnSigma[itype * 2 + 1]  = nSigma; 
-  fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
-}    
-
-//_____________________________________________________________________
-void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){
-  //
-  // assymetric sigma cut for TPC PID
-  //
-  fCutTPCnSigma[itype * 2]      = negSigma;
-  fCutTPCnSigma[itype * 2 + 1]  = posSigma;
-  fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
-} 
-
-//_____________________________________________________________________
-void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ 
-  //
-  // symmetric sigma cut for TOF PID
-  //
-  fCutTOFnSigma[itype * 2]      = -nSigma;
-  fCutTOFnSigma[itype * 2 + 1]  = nSigma; 
-  fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
-}    
-
-//_____________________________________________________________________
-void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){
-  //
-  // assymetric sigma cut for TOF PID
-  //
-  fCutTOFnSigma[itype * 2]      = negSigma;
-  fCutTOFnSigma[itype * 2 + 1]  = posSigma;
-  fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
-}
-#endif
+#ifndef ALIESDPIDCUTS_H\r
+#define ALIESDPIDCUTS_H\r
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
+ * See cxx source for full Copyright notice                               */\r
+//\r
+// Class for PID cuts\r
+// Cuts the track based on numbers of sigmas in the detectors TPC and TOF\r
+// The sigma cuts can be applied symmetrically or assymetrically\r
+//\r
+\r
+#ifndef ALIANALYSISCUTS_H\r
+#include "AliAnalysisCuts.h"\r
+#endif\r
+\r
+#ifndef ALIPID_H\r
+#include "AliPID.h"\r
+#endif\r
+\r
+class TCollection;\r
+class TH1F;\r
+class TH1I;\r
+class TH2I;\r
+class TList;\r
+class AliESDtrack;\r
+class AliESDEvent;\r
+class AliESDpid;\r
+\r
+class AliESDpidCuts : public AliAnalysisCuts{\r
+  enum{\r
+    kHasHistograms = BIT(17)\r
+  };\r
+  public: \r
+    AliESDpidCuts(const Char_t *name = "AliESDpidCuts", const Char_t *title = "");\r
+    AliESDpidCuts(const AliESDpidCuts &ref);  // Copy constructor\r
+    AliESDpidCuts &operator=(const AliESDpidCuts &ref);\r
+    virtual ~AliESDpidCuts();\r
+\r
+    virtual void Copy(TObject &c) const;\r
+    virtual Long64_t Merge(TCollection *coll);\r
+\r
+    Bool_t HasHistograms() const { return TestBit(kHasHistograms); }\r
+    void DefineHistograms(Color_t color = kRed);\r
+    void DrawHistograms();\r
+    void SaveHistograms(const Char_t *location = NULL);\r
+    virtual Bool_t IsSelected(TObject *);\r
+    virtual Bool_t IsSelected(TList * /*lst*/) {return kTRUE; }\r
+    virtual Bool_t AcceptTrack(const AliESDtrack *track, const AliESDEvent *event);\r
+\r
+    AliESDpid *GetESDpid() { return fESDpid; };\r
+    \r
+    void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; }\r
+    inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);\r
+    inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);\r
+    inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);\r
+    inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);\r
+    void SetMinMomentumTOF(Float_t mom) { fMinMomentumTOF = mom; }\r
+  \r
+  protected:\r
+    static const Int_t kNcuts;                      // Number of Cuts\r
+    AliESDpid *fESDpid;                             //! PID helper (n-sigma-cut)\r
+    Char_t  fTPCsigmaCutRequired;                   // Sigma cut Requirement for TPC and Particle Species\r
+    Char_t  fTOFsigmaCutRequired;                   // Sigma cut Requirement for TOF and Particle Species\r
+    Float_t fCutTPCnSigma[AliPID::kSPECIES * 2];    // Species dependent cut on the distance to the TPC dE/dx line\r
+    Float_t fCutTOFnSigma[AliPID::kSPECIES * 2];    // Species dependent cut on the distance to the TOF calculated time of flight line\r
+    Float_t fCutTPCclusterRatio;                    // Cut on Ratio of found clusters with repect to findable clusters in the TPC\r
+    Float_t fMinMomentumTOF;                        // Apply TOF PID only above a certain momentum\r
+\r
+    //------------------------------------------\r
+    // QA histograms\r
+    TH1I *fHcutStatistics;                       // Cut Statistics\r
+    TH2I *fHcutCorrelation;                      // Cut Correlation\r
+    TH1F *fHclusterRatio[2];                     // TPC cluster Ratio\r
+    TH1F *fHnSigmaTPC[AliPID::kSPECIES][2];      // TPC n-sigma cut\r
+    TH1F *fHnSigmaTOF[AliPID::kSPECIES][2];      // TOF n-sigma cut\r
+    //------------------------------------------\r
+    \r
+    ClassDef(AliESDpidCuts, 3)\r
+};\r
+\r
+//_____________________________________________________________________\r
+void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ \r
+  //\r
+  // symmetric sigma cut for TPC PID\r
+  //\r
+  fCutTPCnSigma[itype * 2]      = -nSigma;\r
+  fCutTPCnSigma[itype * 2 + 1]  = nSigma; \r
+  fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r
+}    \r
+\r
+//_____________________________________________________________________\r
+void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){\r
+  //\r
+  // assymetric sigma cut for TPC PID\r
+  //\r
+  fCutTPCnSigma[itype * 2]      = negSigma;\r
+  fCutTPCnSigma[itype * 2 + 1]  = posSigma;\r
+  fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r
+} \r
+\r
+//_____________________________________________________________________\r
+void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ \r
+  //\r
+  // symmetric sigma cut for TOF PID\r
+  //\r
+  fCutTOFnSigma[itype * 2]      = -nSigma;\r
+  fCutTOFnSigma[itype * 2 + 1]  = nSigma; \r
+  fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r
+}    \r
+\r
+//_____________________________________________________________________\r
+void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){\r
+  //\r
+  // assymetric sigma cut for TOF PID\r
+  //\r
+  fCutTOFnSigma[itype * 2]      = negSigma;\r
+  fCutTOFnSigma[itype * 2 + 1]  = posSigma;\r
+  fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);\r
+}\r
+#endif\r