ROOT logo
#ifndef ALIANALYSISTASKMUONTREEBUILDER_H
#define ALIANALYSISTASKMUONTREEBUILDER_H

/* $Id$ */ 

#include "AliAnalysisTaskSE.h"
#include "TMath.h"

//	Analysis task for muon-dimuon analysis
//	Works for real and MC events
//	author: L. Bianchi - Universita' & INFN Torino

class TH1I;
class TParticle ;
class TLorentzVector ;
class TFile ;
class AliStack ;
class AliESDtrack;
class AliVParticle;
class AliMCParticle;
class AliMCEvent;


class AliAnalysisTaskMuonTreeBuilder : public AliAnalysisTaskSE {
  public:

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

  // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
  void     UserExec(Option_t *option);
  void     Terminate(Option_t *);
  void     UserCreateOutputObjects();
  

  // Data types
  void   SetIsMC     (Bool_t flagMC)  	{fIsMC=flagMC;}
  void	 SetBeamEnergy   (Double_t en)		{fBeamEnergy=en;}
  
 protected:
  
  Double_t           	fNevt            ;    	// event counter
  Double_t		fBeamEnergy      ;    	// Energy of the beam (required for the CS angle)
  TList 		*fOutput         ;    	// output
  TTree 		*fOutputTree     ;    	//! tree output
  
  Bool_t	fIsMC;				// if MC truth has to be read
  
  Bool_t	fIsSelected;			// physics selection flag
  char		fTrigClass[100];		// fired trigger classes

  Int_t		fNumMuonTracks	;		// muon tracks in the event
  Int_t		fNumSPDTracklets;		// spd tracklets
  Int_t		fNumContributors;		// n contributors
  Double_t	fVertex[3];			// x,y,z vertex
  Double_t	fpT[10];			// single mu pT
  Double_t	fE[10];				// single mu E
  Double_t	fpx[10];			// single mu px
  Double_t	fpy[10];			// single mu py
  Double_t	fpz[10];			// single mu pz
  Double_t	fpxUncorr[10];			// single mu px uncorrected
  Double_t	fpyUncorr[10];			// single mu py uncorrected
  Double_t	fpzUncorr[10];			// single mu pz uncorrected
  Double_t	fy[10];				// single mu y
  Double_t	feta[10];			// single mu eta
  Double_t	fphi[10];			// single mu phi
  Int_t		fMatchTrig[10];			// single mu match trigger
  Double_t	fTrackChi2[10];			// single mu chi2 track
  Double_t	fMatchTrigChi2[10];		// single mu chi2 of match trigger
  Double_t	fDCA[10];			// single mu DCA
  Short_t	fCharge[10];			// single mu charge
  Int_t		fMuFamily[10];			// single mu provenience
  Double_t	fRAtAbsEnd[10];			// single mu distance from beam center at end abs

  Int_t		fNumDimuons;			// dimuons in the event
  Int_t		fDimuonConstituent[45][2];	// reference to single mus
  Double_t	fpTdimuon[45];			// dimuon pT
  Double_t	fpxdimuon[45];			// dimuon px
  Double_t	fpydimuon[45];			// dimuon py
  Double_t	fpzdimuon[45];			// dimuon pz
  Double_t	fydimuon[45];			// dimuon y
  Double_t	fiMassdimuon[45];		// dimuon invariant mass
  Double_t	fcostCS[45];			// dimuon cos theta Collins-Soper
  Double_t	fcostHE[45];			// dimuon cos theta Helicity
  Double_t	fphiCS[45];			// dimuon phi Collins-Soper
  Double_t	fphiHE[45];			// dimuon phi Helicity
  
  //Int_t		fIsPrimary[10];
  Int_t		fPDG[10];			// PDG single mu
  Int_t		fPDGmother[10];			// PDG mother single mu
  Int_t		fPDGdimu[45];			// PDG dimu



  
  
  Int_t   FindDimuFamily(AliMCParticle* mcTrack1,AliMCParticle* mcTrack2, AliMCEvent* mcEvent) const;
  Int_t	  FindMuFamily(AliMCParticle* mcTrack, AliMCEvent* mcEvent) const;
  Double_t Imass  (Double_t e1, Double_t px1, Double_t py1, Double_t pz1, Double_t e2, Double_t px2, Double_t py2, Double_t pz2) const;
  Double_t Rap	  (Double_t e, Double_t pz) const;
  Double_t Phideg(Double_t phi) 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);
  Double_t PhiCS  (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 PhiHE  (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);
  
  ClassDef(AliAnalysisTaskMuonTreeBuilder,1);
};

#endif
 AliAnalysisTaskMuonTreeBuilder.h:1
 AliAnalysisTaskMuonTreeBuilder.h:2
 AliAnalysisTaskMuonTreeBuilder.h:3
 AliAnalysisTaskMuonTreeBuilder.h:4
 AliAnalysisTaskMuonTreeBuilder.h:5
 AliAnalysisTaskMuonTreeBuilder.h:6
 AliAnalysisTaskMuonTreeBuilder.h:7
 AliAnalysisTaskMuonTreeBuilder.h:8
 AliAnalysisTaskMuonTreeBuilder.h:9
 AliAnalysisTaskMuonTreeBuilder.h:10
 AliAnalysisTaskMuonTreeBuilder.h:11
 AliAnalysisTaskMuonTreeBuilder.h:12
 AliAnalysisTaskMuonTreeBuilder.h:13
 AliAnalysisTaskMuonTreeBuilder.h:14
 AliAnalysisTaskMuonTreeBuilder.h:15
 AliAnalysisTaskMuonTreeBuilder.h:16
 AliAnalysisTaskMuonTreeBuilder.h:17
 AliAnalysisTaskMuonTreeBuilder.h:18
 AliAnalysisTaskMuonTreeBuilder.h:19
 AliAnalysisTaskMuonTreeBuilder.h:20
 AliAnalysisTaskMuonTreeBuilder.h:21
 AliAnalysisTaskMuonTreeBuilder.h:22
 AliAnalysisTaskMuonTreeBuilder.h:23
 AliAnalysisTaskMuonTreeBuilder.h:24
 AliAnalysisTaskMuonTreeBuilder.h:25
 AliAnalysisTaskMuonTreeBuilder.h:26
 AliAnalysisTaskMuonTreeBuilder.h:27
 AliAnalysisTaskMuonTreeBuilder.h:28
 AliAnalysisTaskMuonTreeBuilder.h:29
 AliAnalysisTaskMuonTreeBuilder.h:30
 AliAnalysisTaskMuonTreeBuilder.h:31
 AliAnalysisTaskMuonTreeBuilder.h:32
 AliAnalysisTaskMuonTreeBuilder.h:33
 AliAnalysisTaskMuonTreeBuilder.h:34
 AliAnalysisTaskMuonTreeBuilder.h:35
 AliAnalysisTaskMuonTreeBuilder.h:36
 AliAnalysisTaskMuonTreeBuilder.h:37
 AliAnalysisTaskMuonTreeBuilder.h:38
 AliAnalysisTaskMuonTreeBuilder.h:39
 AliAnalysisTaskMuonTreeBuilder.h:40
 AliAnalysisTaskMuonTreeBuilder.h:41
 AliAnalysisTaskMuonTreeBuilder.h:42
 AliAnalysisTaskMuonTreeBuilder.h:43
 AliAnalysisTaskMuonTreeBuilder.h:44
 AliAnalysisTaskMuonTreeBuilder.h:45
 AliAnalysisTaskMuonTreeBuilder.h:46
 AliAnalysisTaskMuonTreeBuilder.h:47
 AliAnalysisTaskMuonTreeBuilder.h:48
 AliAnalysisTaskMuonTreeBuilder.h:49
 AliAnalysisTaskMuonTreeBuilder.h:50
 AliAnalysisTaskMuonTreeBuilder.h:51
 AliAnalysisTaskMuonTreeBuilder.h:52
 AliAnalysisTaskMuonTreeBuilder.h:53
 AliAnalysisTaskMuonTreeBuilder.h:54
 AliAnalysisTaskMuonTreeBuilder.h:55
 AliAnalysisTaskMuonTreeBuilder.h:56
 AliAnalysisTaskMuonTreeBuilder.h:57
 AliAnalysisTaskMuonTreeBuilder.h:58
 AliAnalysisTaskMuonTreeBuilder.h:59
 AliAnalysisTaskMuonTreeBuilder.h:60
 AliAnalysisTaskMuonTreeBuilder.h:61
 AliAnalysisTaskMuonTreeBuilder.h:62
 AliAnalysisTaskMuonTreeBuilder.h:63
 AliAnalysisTaskMuonTreeBuilder.h:64
 AliAnalysisTaskMuonTreeBuilder.h:65
 AliAnalysisTaskMuonTreeBuilder.h:66
 AliAnalysisTaskMuonTreeBuilder.h:67
 AliAnalysisTaskMuonTreeBuilder.h:68
 AliAnalysisTaskMuonTreeBuilder.h:69
 AliAnalysisTaskMuonTreeBuilder.h:70
 AliAnalysisTaskMuonTreeBuilder.h:71
 AliAnalysisTaskMuonTreeBuilder.h:72
 AliAnalysisTaskMuonTreeBuilder.h:73
 AliAnalysisTaskMuonTreeBuilder.h:74
 AliAnalysisTaskMuonTreeBuilder.h:75
 AliAnalysisTaskMuonTreeBuilder.h:76
 AliAnalysisTaskMuonTreeBuilder.h:77
 AliAnalysisTaskMuonTreeBuilder.h:78
 AliAnalysisTaskMuonTreeBuilder.h:79
 AliAnalysisTaskMuonTreeBuilder.h:80
 AliAnalysisTaskMuonTreeBuilder.h:81
 AliAnalysisTaskMuonTreeBuilder.h:82
 AliAnalysisTaskMuonTreeBuilder.h:83
 AliAnalysisTaskMuonTreeBuilder.h:84
 AliAnalysisTaskMuonTreeBuilder.h:85
 AliAnalysisTaskMuonTreeBuilder.h:86
 AliAnalysisTaskMuonTreeBuilder.h:87
 AliAnalysisTaskMuonTreeBuilder.h:88
 AliAnalysisTaskMuonTreeBuilder.h:89
 AliAnalysisTaskMuonTreeBuilder.h:90
 AliAnalysisTaskMuonTreeBuilder.h:91
 AliAnalysisTaskMuonTreeBuilder.h:92
 AliAnalysisTaskMuonTreeBuilder.h:93
 AliAnalysisTaskMuonTreeBuilder.h:94
 AliAnalysisTaskMuonTreeBuilder.h:95
 AliAnalysisTaskMuonTreeBuilder.h:96
 AliAnalysisTaskMuonTreeBuilder.h:97
 AliAnalysisTaskMuonTreeBuilder.h:98
 AliAnalysisTaskMuonTreeBuilder.h:99
 AliAnalysisTaskMuonTreeBuilder.h:100
 AliAnalysisTaskMuonTreeBuilder.h:101
 AliAnalysisTaskMuonTreeBuilder.h:102
 AliAnalysisTaskMuonTreeBuilder.h:103
 AliAnalysisTaskMuonTreeBuilder.h:104
 AliAnalysisTaskMuonTreeBuilder.h:105
 AliAnalysisTaskMuonTreeBuilder.h:106
 AliAnalysisTaskMuonTreeBuilder.h:107
 AliAnalysisTaskMuonTreeBuilder.h:108
 AliAnalysisTaskMuonTreeBuilder.h:109
 AliAnalysisTaskMuonTreeBuilder.h:110
 AliAnalysisTaskMuonTreeBuilder.h:111
 AliAnalysisTaskMuonTreeBuilder.h:112
 AliAnalysisTaskMuonTreeBuilder.h:113
 AliAnalysisTaskMuonTreeBuilder.h:114