--- /dev/null
+/*************************************************************************
+* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+* *
+* Author: The ALICE Off-line Project. *
+* Contributors are mentioned in the code where appropriate. *
+* *
+* Permission to use, copy, modify and distribute this software and its *
+* documentation strictly for non-commercial purposes is hereby granted *
+* without fee, provided that the above copyright notice appears in all *
+* copies and that both the copyright notice and this permission notice *
+* appear in the supporting documentation. The authors make no claims *
+* about the suitability of this software for any purpose. It is *
+* provided "as is" without express or implied warranty. *
+**************************************************************************/
+//
+// Select events accroding to L0 trigger input
+// Reconstruct 2pi mass
+// save charge, Armenteros' x and y, pid, momentum
+//
+
+#ifndef ALIANALYSISTASKDDMESON_H
+#define ALIANALYSISTASKDDMESON_H
+
+#ifndef ALIANALYSISTASK_H
+#include "AliAnalysisTaskSE.h"
+#endif
+
+class AliESDEvent;
+class AliESDtrack;
+
+class TH1I;
+class TH2I;
+class TH2D;
+class TList;
+class THnSparse;
+class TLorentzVector;
+
+class AliAnalysisTaskDDMeson : public AliAnalysisTaskSE{
+ public:
+
+ AliAnalysisTaskDDMeson(const TString opt);
+ AliAnalysisTaskDDMeson(const AliAnalysisTaskDDMeson &p);
+ AliAnalysisTaskDDMeson& operator=(const AliAnalysisTaskDDMeson &p);
+ virtual ~AliAnalysisTaskDDMeson();
+
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *);
+ virtual void Terminate(Option_t *);
+
+ void IniTask();
+
+ Bool_t CheckESD();
+ Bool_t CheckBit();
+ Int_t CutESD(const AliESDtrack *outtrk[]);
+ //Bool_t CutTrack(const AliESDtrack * esdtrack) const;
+
+ //------
+ void SwapTrack(const AliESDtrack * trks[]) const;
+
+ Int_t GetV0() const;
+ Int_t GetCombCh(const Double_t s1, const Double_t s2) const;
+
+ TLorentzVector GetKinematics(const Double_t *pa, const Double_t *pb, const Double_t ma, const Double_t mb, Double_t & cts) const;
+ Double_t GetCtlab(const Double_t *pa, const Double_t *pb) const;
+
+ void CheckRange(Double_t &ptv, Double_t &pta, Double_t &etaa
+ , Double_t &mpi
+ ) const;
+
+ void FillBit();
+ void CalcBit(TH1I *hc, Double_t tot[]) const;
+
+ //---
+ void SPDLoadGeom() const;
+ Bool_t SPDLoc2Glo(const Int_t id, const Double_t *loc, Double_t *glo) const;
+ Bool_t CheckChipEta(const Int_t chipKey) const;
+ void GetNFO(Int_t &ni, Int_t &no) const;
+
+ private:
+ TString fOpt; //option
+ AliESDEvent *fESD; //esd event
+ //------
+
+ Int_t fnmass; //nbins for mass
+ Double_t fmass1; //upper edge of axis
+
+ Int_t fnptv; //nbins for p
+ Double_t fptv1; //upper edge of axis
+
+ Int_t fnpta; //nbins for p
+ Double_t fpta1; //upper edge of axis
+
+ Int_t fneta; //nbins for eta
+ Double_t feta; //upper edge of axis
+
+ Int_t fnnsel; //nbins for nsel
+ Double_t fnsel1; //upper edge of axis
+
+ Int_t fncts; //nbins for cts
+ Int_t fnctlab; //nbins for ctlab
+
+ //------
+ Int_t fCHECKVBA; //V0A bit
+ Int_t fCHECKVBC; //V0C bit
+
+ TH1I *fHBIT; //histogram of bits
+ Int_t fBitcg; //trigger bit configuration
+
+ Int_t fRun; //run number
+ TH1I *fat; //V0A-only
+ TH1I *fct; //V0C-only
+ TH1I *fbt; //V0A & V0C
+ TH1I *fnt; //!V0A & !V0C
+ TH1I *ftt; //TOTAL
+
+ //------
+ TH2D *fv0ntrk; //v0bit vs. nch
+ TH2D *frsntrk; //raw vs. sel
+
+ TH1I *fhps; //V0 BG
+ TH2I *fhfo; //SPD fastor hardware, in eta acceptance
+ TH1I *fhspd;//SPD fastor offline
+ TH2I *fhv0fmd; //v0 vs fmd
+ TH1I *fhpriv; //primary vertex cut effect
+ TH1I *fhntrk; //n-trk-after-cut effect
+
+ //------
+ TList *fHist; //output list
+ THnSparse *fThnMass; //ThnSparse for mother pt and Mass
+ THnSparse *fThnDPt; //ThnSparse for pt and eta of daughter
+ THnSparse *fThnDEta; //ThnSparse for pt and eta of daughter
+ THnSparse *fThnKF; //kf
+ ClassDef(AliAnalysisTaskDDMeson, 1);
+};
+
+
+#endif
+