--- /dev/null
+#ifndef ALIANALYSISTASKMUONTRACKINGEFF_H
+#define ALIANALYSISTASKMUONTRACKINGEFF_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id$ */
+
+/// \ingroup base
+/// \class AliAnalysisTaskMuonTrackingEff
+/// \brief tracking chamber efficiency from ESD data
+//Author: Nicolas LE BRIS - SUBATECH Nantes
+
+#include "AliAnalysisTaskSE.h"
+
+class AliMUONGeometryTransformer;
+class AliESDMuonTrack;
+class AliMUONTrackParam;
+class TList;
+class TString;
+class TObjArray;
+
+class AliAnalysisTaskMuonTrackingEff : public AliAnalysisTaskSE
+{
+ public:
+ AliAnalysisTaskMuonTrackingEff();
+ AliAnalysisTaskMuonTrackingEff(TString name);
+ virtual ~AliAnalysisTaskMuonTrackingEff();
+
+ /// Set location of the default OCDB storage (if not set use "raw://")
+ void SetDefaultStorage(const char* ocdbPath) { fOCDBpath = ocdbPath; }
+
+ /// set the flag to use only tracks matched with trigger or not
+ void MatchTrigger(Bool_t flag = kTRUE) { fMatchTrig = flag; }
+
+ /// set the flag to use only tracks passing the acceptance cuts (Rabs, eta)
+ void ApplyAccCut(Bool_t flag = kTRUE) { fApplyAccCut = flag; }
+
+ /// set the sigma cut value on p*DCA
+ void PDCACut(Double_t cut) { fPDCACut = cut; }
+
+ /// set the cut value on normalized chi2
+ void Chi2Cut(Double_t cut) { fChi2Cut = cut; }
+
+ /// set the cut value on minimum pt
+ void PtCut(Double_t cut) { fPtCut = cut; }
+
+ /// set the cut value on minimum pt
+ void UseMCLabel(Bool_t flag = kTRUE) { fUseMCLabel = flag; }
+
+ // Implementation of interface methods
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *);
+ virtual void NotifyRun();
+ virtual void Terminate(Option_t *);
+
+
+ private:
+
+ /// Not implemented
+ AliAnalysisTaskMuonTrackingEff(const AliAnalysisTaskMuonTrackingEff& rhs);
+ /// Not implemented
+ AliAnalysisTaskMuonTrackingEff& operator = (const AliAnalysisTaskMuonTrackingEff& rhs);
+
+ void TrackParamLoop(const TObjArray* trackParams);
+
+ void FindAndFillMissedDetElt (const AliMUONTrackParam* trackParam,
+ const Bool_t* trackFilter,
+ Int_t firstMissCh, Int_t lastChamber);
+
+ void CoordinatesOfMissingCluster(Double_t x1, Double_t y1, Double_t z1,
+ Double_t x2, Double_t y2, Double_t z2,
+ Double_t& x, Double_t& y) const;
+
+ Bool_t CoordinatesInDetElt(Int_t DeId, Double_t x, Double_t y) const;
+
+ void FillTDHistos (Int_t chamber, Int_t detElt, Double_t posXL, Double_t posYL);
+
+ void FillTTHistos (Int_t chamber, Int_t detElt, Double_t posXL, Double_t posYL);
+
+ void FillSDHistos (Int_t chamber, Int_t detElt, Double_t posXL, Double_t posYL);
+
+ Int_t FromDetElt2iDet (Int_t chamber, Int_t detElt) const;
+ Int_t FromDetElt2LocalId (Int_t chamber, Int_t detElt) const;
+ Int_t FromLocalId2DetElt(Int_t chamber, Int_t iDet) const;
+
+
+private:
+
+ static const Int_t fgkNbrOfDetectionElt[10]; ///< The total number of detection element in each chamber.
+ static const Int_t fgkOffset; ///< fFirstDetectionElt[iChamber] = fOffset * (iChamber+1).
+
+ Bool_t fOCDBLoaded; //!< Determine if the OCDB and =geometry have been loaded
+ TString fOCDBpath; ///< OCDB path
+ Bool_t fMatchTrig; ///< use only tracks matched with trigger
+ Bool_t fApplyAccCut; ///< use only tracks passing the acceptance cuts (Rabs, eta)
+ Double_t fPDCACut; ///< sigma cut on p*DCA
+ Double_t fChi2Cut; ///< cut on normalized chi2
+ Double_t fPtCut; ///< cut on minimum pt
+ Bool_t fUseMCLabel; ///< select tracks using MC label
+ Float_t fCurrentCentrality; //!< centrality of the current event
+ AliESDMuonTrack* fCurrentTrack; //!< pointer to the currently analyzed track
+
+ AliMUONGeometryTransformer *fTransformer; //!< Transformer object
+
+ TList* fDetEltTDHistList; //!< List of histograms of the tracks detected in the detection elements.
+ TList* fDetEltTTHistList; //!< List of histograms of the tracks which have passed through the detection elements.
+ TList* fDetEltSDHistList; //!< List of histograms of the tracks only detected by one chamber of the station at the detection element level.
+ TList* fChamberTDHistList; //!< List of histograms of the tracks detected in the chambers.
+ TList* fChamberTTHistList; //!< List of histograms of the tracks which have passed through the chambers.
+ TList* fChamberSDHistList; //!< List of histograms of the tracks only detected by one chamber of the station.
+ TList* fExtraHistList; //!< List of extra histograms.
+
+
+ ClassDef(AliAnalysisTaskMuonTrackingEff, 4)
+};
+
+#endif
+