ROOT logo
#ifndef ALIANALYSISTASKMUONDISTRIBUTIONS_H
#define ALIANALYSISTASKMUONDISTRIBUTIONS_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

/* Analysis Task for Muon/Dimuon distributions */

#include "AliAnalysisTaskSE.h"

class TH1D;
class TParticle ;
class TLorentzVector ;
class TFile ;
class AliStack ;
class AliESDtrack;
class AliVParticle;

class AliAnalysisTaskMuonDistributions : public AliAnalysisTaskSE {
  public:

  AliAnalysisTaskMuonDistributions();
  AliAnalysisTaskMuonDistributions(const Char_t* name);
  AliAnalysisTaskMuonDistributions& operator= (const AliAnalysisTaskMuonDistributions& c);
  AliAnalysisTaskMuonDistributions(const AliAnalysisTaskMuonDistributions& c);
  virtual ~AliAnalysisTaskMuonDistributions();

  // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
  void UserExec(Option_t *option);
  void Terminate(Option_t *);
  void UserCreateOutputObjects();
  
  void SetBeamEnergy(Double_t en) {fBeamEnergy=en;}
  void SetAnalysisType(const char* type) {fkAnalysisType=type;}
  void SetInvMassFitLimits(Double_t xmin, Double_t xmax) {fInvMassFitLimitMin=xmin; fInvMassFitLimitMax=xmax;}
  void SetPsiFitLimits(Double_t xmin, Double_t xmax) {fPsiFitLimitMin=xmin; fPsiFitLimitMax=xmax;}
  void SetPsiPFitLimits(Double_t xmin, Double_t xmax) {fPsiPFitLimitMin=xmin; fPsiPFitLimitMax=xmax;}
  void SetBckFitLimits(Double_t xmin, Double_t xmax) {fBckFitLimitMin=xmin; fBckFitLimitMax=xmax;}
  void FitInvariantMassSpectrum(Bool_t massfit=kFALSE) {fInvariantMassFit=massfit;}
 
 protected:
  
  Double_t fBeamEnergy;   // Energy of the beam (required for the CS angle)
  Double_t fInvMassFitLimitMin;  // invariant mass spectrum fit lower limit 
  Double_t fInvMassFitLimitMax;  // invariant mass spectrum fit upper limit 
  Double_t fPsiFitLimitMin;  // psi fit lower limits 
  Double_t fPsiFitLimitMax;  // psi fit upper limits 
  Double_t fPsiPFitLimitMin;  // psi(2S) fit lower limits 
  Double_t fPsiPFitLimitMax;  // psi(2S) fit upper limits 
  Double_t fBckFitLimitMin;  // bck fit lower limits 
  Double_t fBckFitLimitMax;  // bck fit upper limits
  Bool_t fInvariantMassFit; // flag to perform or not inv. mass fit
    
  const char* fkAnalysisType; //ESD or AOD based analysis
  TList *fOutput;  // output file
      
  Float_t InvMass (Float_t e1, Float_t px1, Float_t py1, Float_t pz1, Float_t e2, Float_t px2, Float_t py2, Float_t pz2) const;
  Float_t Rapidity (Float_t e, Float_t pz) const;
  Double_t CostCS (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
  Double_t CostHE (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
  void FitInvMass(TH1D* histo);
  
  ClassDef(AliAnalysisTaskMuonDistributions,1);
};

#endif
 AliAnalysisTaskMuonDistributions.h:1
 AliAnalysisTaskMuonDistributions.h:2
 AliAnalysisTaskMuonDistributions.h:3
 AliAnalysisTaskMuonDistributions.h:4
 AliAnalysisTaskMuonDistributions.h:5
 AliAnalysisTaskMuonDistributions.h:6
 AliAnalysisTaskMuonDistributions.h:7
 AliAnalysisTaskMuonDistributions.h:8
 AliAnalysisTaskMuonDistributions.h:9
 AliAnalysisTaskMuonDistributions.h:10
 AliAnalysisTaskMuonDistributions.h:11
 AliAnalysisTaskMuonDistributions.h:12
 AliAnalysisTaskMuonDistributions.h:13
 AliAnalysisTaskMuonDistributions.h:14
 AliAnalysisTaskMuonDistributions.h:15
 AliAnalysisTaskMuonDistributions.h:16
 AliAnalysisTaskMuonDistributions.h:17
 AliAnalysisTaskMuonDistributions.h:18
 AliAnalysisTaskMuonDistributions.h:19
 AliAnalysisTaskMuonDistributions.h:20
 AliAnalysisTaskMuonDistributions.h:21
 AliAnalysisTaskMuonDistributions.h:22
 AliAnalysisTaskMuonDistributions.h:23
 AliAnalysisTaskMuonDistributions.h:24
 AliAnalysisTaskMuonDistributions.h:25
 AliAnalysisTaskMuonDistributions.h:26
 AliAnalysisTaskMuonDistributions.h:27
 AliAnalysisTaskMuonDistributions.h:28
 AliAnalysisTaskMuonDistributions.h:29
 AliAnalysisTaskMuonDistributions.h:30
 AliAnalysisTaskMuonDistributions.h:31
 AliAnalysisTaskMuonDistributions.h:32
 AliAnalysisTaskMuonDistributions.h:33
 AliAnalysisTaskMuonDistributions.h:34
 AliAnalysisTaskMuonDistributions.h:35
 AliAnalysisTaskMuonDistributions.h:36
 AliAnalysisTaskMuonDistributions.h:37
 AliAnalysisTaskMuonDistributions.h:38
 AliAnalysisTaskMuonDistributions.h:39
 AliAnalysisTaskMuonDistributions.h:40
 AliAnalysisTaskMuonDistributions.h:41
 AliAnalysisTaskMuonDistributions.h:42
 AliAnalysisTaskMuonDistributions.h:43
 AliAnalysisTaskMuonDistributions.h:44
 AliAnalysisTaskMuonDistributions.h:45
 AliAnalysisTaskMuonDistributions.h:46
 AliAnalysisTaskMuonDistributions.h:47
 AliAnalysisTaskMuonDistributions.h:48
 AliAnalysisTaskMuonDistributions.h:49
 AliAnalysisTaskMuonDistributions.h:50
 AliAnalysisTaskMuonDistributions.h:51
 AliAnalysisTaskMuonDistributions.h:52
 AliAnalysisTaskMuonDistributions.h:53
 AliAnalysisTaskMuonDistributions.h:54
 AliAnalysisTaskMuonDistributions.h:55
 AliAnalysisTaskMuonDistributions.h:56
 AliAnalysisTaskMuonDistributions.h:57
 AliAnalysisTaskMuonDistributions.h:58
 AliAnalysisTaskMuonDistributions.h:59
 AliAnalysisTaskMuonDistributions.h:60
 AliAnalysisTaskMuonDistributions.h:61
 AliAnalysisTaskMuonDistributions.h:62
 AliAnalysisTaskMuonDistributions.h:63
 AliAnalysisTaskMuonDistributions.h:64
 AliAnalysisTaskMuonDistributions.h:65
 AliAnalysisTaskMuonDistributions.h:66
 AliAnalysisTaskMuonDistributions.h:67
 AliAnalysisTaskMuonDistributions.h:68