]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/correlationHF/AliDxHFEParticleSelectionEl.h
Corrected EINCLUDE
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliDxHFEParticleSelectionEl.h
index e3a91b665cb0609d6ad3c9e9b85bec547e5165e8..2358b5f3c7eec5fc94ffb0971e9c7aee9249da00 100644 (file)
@@ -1,5 +1,5 @@
 //-*- Mode: C++ -*-
-// $Id$
+// // $Id$
 
 //* This file is property of and copyright by the ALICE Project        * 
 //* ALICE Experiment at CERN, All rights reserved.                     *
 #define ALIDXHFEPARTICLESELECTIONEL_H
 
 #include "AliDxHFEParticleSelection.h"
+
+// 2012-09-17: there has been a problem in the dictionary generation for par file
+// compilation, so we have to include the header files indicated below
+//  Generating dictionary ...
+//  In file included from $ROOTSYS/include/TObject.h:230:0,
+//                   from G__PWGHFcorrelationHF.h:32,
+//                   from G__PWGHFcorrelationHF.cxx:17:
+//  $ROOTSYS/include/TBuffer.h: In function ‘TBuffer& operator>>(TBuffer&, Tmpl*&) [with Tmpl = AliHFEcuts]’:
+//  G__PWGHFcorrelationHF.cxx:1658:15:   instantiated from here
+//  $ROOTSYS/include/TBuffer.h:373:47: error: invalid use of incomplete type ‘struct AliHFEcuts’
+//  correlationHF/AliDxHFEParticleSelectionEl.h:25:7: error: forward declaration of ‘struct AliHFEcuts’
+
+#include "AliHFEcuts.h" // need to directly include to avoid compilation error in the dictionary
+#include "AliHFEpid.h"  // need to directly include to avoid compilation error in the dictionary
+
 class AliPID;
 class AliPIDResponse;
-class AliHFEcuts;
 class AliHFEvarManager;
-class AliHFEpid;
 class AliHFEpidBase;
 class AliHFEtools;
 class AliVEvent;
+class AliSelectNonHFE;
 class AliCFManager;
-class TH1;
+class TList;
+class AliESDtrackCuts;
 
 /**
  * @class AliDxHFEParticleSelectionEl
@@ -37,46 +52,105 @@ class AliDxHFEParticleSelectionEl : public AliDxHFEParticleSelection {
   AliDxHFEParticleSelectionEl(const char* opt="");
   /// destructor
   virtual ~AliDxHFEParticleSelectionEl();
-
+  
   enum {
     kCutHFE = 0,
-    kCutPID = 1,
+    kCutPIDTOFTPC = 1,
+    kCutPIDTOF = 2,
+    kCutPIDTPC = 3,
+    kCutList=3,
     kNCuts
   };
 
+  enum {
+    kNotSelected=-2,
+    kNoCuts=-1,
+    kRecKineITSTPC=0,
+    kRecPrim,
+    kHFEcutsITS,
+    kHFEcutsTOF,
+    kHFEcutsTPC,
+    kPIDTOF,
+    kPIDTPC,
+    kPIDTOFTPC,
+    kINVMASS,
+    kSelected,
+    kNCutLabels
+  };
+
+  enum {
+    kNoInvMass=0,
+    kInvMassSingleSelected, // based on AliSelectNonHFE, one partcle passing track cuts
+                            // and 2nd particle passing weaker cut
+    kInvMassTwoSelected     // pairs of particles both passing the track cuts
+  };
+
+
+  ///overloaded from AliDxHFEParticleSelection: Init
+  virtual int Init();
+
   /// overloaded from AliDxHFEParticleSelection: init the control objects
   virtual int InitControlObjects();
+  virtual THnSparse* DefineTHnSparse();
 
   /// overloaded from AliDxHFEParticleSelection: check particle
-  virtual int IsSelected(AliVParticle* p, const AliVEvent*);
+  virtual TObjArray* Select(const AliVEvent* pEvent);
+  using AliDxHFEParticleSelection::Select;
+
+  virtual int IsSelected(AliVParticle* p, const AliVEvent* pEvent);
 
   virtual int HistogramParticleProperties(AliVParticle* p, int selected);
 
-  // overloaded from AliDxHFEParticleSelection: specific for electrons
-  //virtual TObjArray* Select(const AliVEvent *pEvent);
+  virtual int FillParticleProperties(AliVParticle* p, Double_t* date, int dimension) const;
 
   /// set cuts object: a type cast check is implemented in the method
   virtual void SetCuts(TObject* /*cuts*/, int /*level*/=0);
+  virtual void SetFinalCutStep(int cutstep){fFinalCutStep=cutstep;}
+  virtual void SetStoreLastCutStep(bool storecut){fStoreCutStepInfo=storecut;}
+
+  virtual void SetPIDResponse(const AliPIDResponse* const pidresp){fPIDResponse=(AliPIDResponse*)(pidresp);}
+  
+  Int_t GetLastSurvivedCutsStep() const{return fSurvivedCutStep;}
 
  protected:
 
  private:
+
   /// copy contructor prohibited
   AliDxHFEParticleSelectionEl(const AliDxHFEParticleSelectionEl&);
   /// assignment operator prohibited
   AliDxHFEParticleSelectionEl& operator=(const AliDxHFEParticleSelectionEl&);
-
   /// check cut of specified step, e.g.
   bool ProcessCutStep(Int_t cutStep, AliVParticle *track);
+  int ParseArguments(const char* arguments);
+
+  virtual void InvMassFilter(TList* elList, Bool_t* selIndx);
 
-  AliHFEpid*    fPID;                //! the PID object
+  AliHFEpid*    fPIDTOFTPC;          //! the PID object
+  AliHFEpid*    fPIDTOF;             //! the PID TOF object
+  AliHFEpid*    fPIDTPC;             //! the PID TOF object
   THnSparse*    fElectronProperties; // the particle properties of selected particles
-  TH1*          fWhichCut;           // effective cut for a rejected particle
+  TList*        fHistoList;          // list of histograms
+  TList*        fCutPidList;         // list for pid and cut objects
+  AliPIDResponse* fPIDResponse;      // fPIDResponse
   AliHFEcuts*   fCuts;               //! Cuts for HF electrons
+  AliSelectNonHFE* fSelNHFE;         // AliSelectNonHFE, inv-mass selection
+  AliESDtrackCuts* fTrackCuts;       //! Track cuts for associated track for Inv Mass
   AliCFManager* fCFM;                //! Correction Framework Manager
-
-
-  ClassDef(AliDxHFEParticleSelectionEl, 2);
+  Int_t         fFinalCutStep;       // Holds the final cutstep
+  Double_t      fInvMassLow;         // lower inv-mass cut
+  Int_t         fUseInvMassCut;      // whether to use inv mass cut
+  Int_t         fSystem;             // whether running on pp(0,default), PbPb(1) or pPb(2, not used yet)
+  Int_t         fTrackNum;           // Current track number
+  Double_t      fImpactParamCutRadial; // cut on Impact parameter (when storing all tracks)
+  Double_t      fEtaCut;             // cut on eta (when storing all tracks)
+  Int_t         fSurvivedCutStep;    // Last cutstep it survived
+  Bool_t        fStoreCutStepInfo;   // Whether to store which cut step is the effective one
+
+  static const char* fgkCutBinNames[]; //! bin labels for cuts histogram
+
+  ClassDef(AliDxHFEParticleSelectionEl, 6); 
 };
 
 #endif