ROOT logo
//========================================================================  
// Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.  
// See cxx source for full Copyright notice                                
//========================================================================  
//                       
//                       Class AliEMCALTrack 
//                      ---------------------
// Implementation of a track to be used for EMCAL track matching.
// This object is used to find track intersection with EMCAL surface
// in order to find the most well matched EMCAL cluster to associate to it.              
// NO Kalman-like parameter updating is done.
//
// ------------------------------------------------------------------------
// author: A. Pulvirenti (alberto.pulvirenti@ct.infn.it)
//=========================================================================

#ifndef AliEMCALTRACK_H
#define AliEMCALTRACK_H

#include "AliExternalTrackParam.h"

class AliESDtrack;

class AliEMCALTrack : public AliExternalTrackParam
{
  
public:

	AliEMCALTrack();
	AliEMCALTrack(const AliESDtrack& t);
	AliEMCALTrack(const AliEMCALTrack& t);
	AliEMCALTrack& operator=(const AliEMCALTrack &t);
	
  Bool_t      PropagateTo(Double_t xr, Double_t d = 0.0, Double_t x0 = 21.82);
	Double_t    StraightPropagateTo(Double_t xk, Double_t &x, Double_t &y, Double_t &z);
	Bool_t      PropagateToGlobal(Double_t x, Double_t y, Double_t z, Double_t d = 0.0, Double_t x0 = 21.82);  
  
	Int_t       Compare(const TObject *o)        const ;
	Int_t       GetClusterIndex()                const { return fClusterIndex     ; }
	Double_t    GetClusterDist()                 const { return fClusterDist      ; }
	Double_t    GetMass()                        const { return fMass             ; }
	Int_t       GetSeedIndex()                   const { return fSeedIndex        ; }
	Int_t       GetSeedLabel()                   const { return fSeedLabel        ; }
	Bool_t      IsSortable()                     const { return kTRUE             ; }
  			
	void        SetClusterIndex(Int_t idx)             { fClusterIndex    = idx   ; }
	void        SetClusterDist(Double_t dist)          { fClusterDist     = dist  ; }
	void        SetMass(Double_t mass)                 { fMass            = mass  ; }
	void        SetSeedIndex(Int_t index)              { fSeedIndex       = index ; }
	void        SetSeedLabel(Int_t label)              { fSeedLabel       = label ; }
		
	static void SetUseOuterParams(Bool_t doit = kTRUE) { fgUseOuterParams = doit  ; }
	static void SetCorrectForEL  (Bool_t doit = kTRUE) { fgCorrectForEL   = doit  ; }
	static void SetSortByPt      (Bool_t doit = kTRUE) { fgSortByPt       = doit  ; }

protected:
	
	Bool_t      SimplePropagation(Double_t xk, Double_t d = 0.0, Double_t x0 = 0.0);
	
	static  Bool_t    fgUseOuterParams;    // use outer parameters from AliESDtrack?
	static  Bool_t    fgCorrectForEL;      // apply corrections for energy loss?
	static  Bool_t    fgSortByPt;          // true --> sort by pt, false --> sort by track-cluster distance
	        Int_t     fClusterIndex;       // index of matched cluster (if any)
	        Double_t  fClusterDist;        // distance between track propagation and matched cluster
	        Double_t  fMass;               // mass hypothesis (in GeV/c2)
	        Int_t     fSeedIndex;          // index of imported ESD track in its owner AliESD
	        Int_t     fSeedLabel;          // GEANT label of imported ESD track

private:
	
	ClassDef(AliEMCALTrack, 0) // track implementation for EMCAL matching

};

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