fTrigger(0),
fRecoVersion(0),
fTracks("AliESDtrack",15000),
+ fCaloTracks("AliESDCaloTrack",500),
+ fMuonTracks("AliESDMuonTrack",30),
fV0s("AliESDv0",200),
fCascades("AliESDcascade",20)
{
#include "TObject.h"
#include "TClonesArray.h"
#include "AliESDtrack.h"
+#include "AliESDMuonTrack.h"
+#include "AliESDCaloTrack.h"
#include "AliESDv0.h"
#include "AliESDcascade.h"
AliESD();
virtual ~AliESD() {
fTracks.Delete();
+ fCaloTracks.Delete();
+ fMuonTracks.Delete();
fV0s.Delete();
fCascades.Delete();
}
AliESDtrack *GetTrack(Int_t i) {
return (AliESDtrack *)fTracks.UncheckedAt(i);
}
+ AliESDCaloTrack *GetCaloTrack(Int_t i) {
+ return (AliESDCaloTrack *)fCaloTracks.UncheckedAt(i);
+ }
+ AliESDMuonTrack *GetMuonTrack(Int_t i) {
+ return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i);
+ }
+
void AddTrack(const AliESDtrack *t) {
new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t);
}
+ void AddCaloTrack(const AliESDCaloTrack *t) {
+ new(fCaloTracks[fCaloTracks.GetEntriesFast()]) AliESDCaloTrack(*t);
+ }
+ void AddMuonTrack(const AliESDMuonTrack *t) {
+ new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t);
+ }
AliESDv0 *GetV0(Int_t i) {
return (AliESDv0 *)fV0s.UncheckedAt(i);
Int_t GetRunNumber() const {return fRunNumber;}
Long_t GetTrigger() const {return fTrigger;}
- Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();}
+ Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();}
+ Int_t GetNumberOfCaloTracks() const {return fCaloTracks.GetEntriesFast();}
+ Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();}
Int_t GetNumberOfV0s() const {return fV0s.GetEntriesFast();}
Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();}
Int_t fRecoVersion; // Version of reconstruction
TClonesArray fTracks; // ESD tracks
+ TClonesArray fCaloTracks; // Calorimeters' ESD tracks
+ TClonesArray fMuonTracks; // MUON ESD tracks
TClonesArray fV0s; // V0 vertices
TClonesArray fCascades; // Cascade vertices
--- /dev/null
+#include "AliESDCaloTrack.h"
+
+ClassImp(AliESDCaloTrack)
+
--- /dev/null
+#ifndef ALIESDCALOTRACK_H
+#define ALIESDCALOTRACK_H
+
+#include "TObject.h"
+
+class AliESDCaloTrack : public TObject {
+ ClassDef(AliESDCaloTrack,1) //ESD calorimeter track class
+};
+
+#endif
--- /dev/null
+#include "AliESDMuonTrack.h"
+
+ClassImp(AliESDMuonTrack)
+
--- /dev/null
+#ifndef ALIESDMUONTRACK_H
+#define ALIESDMUONTRACK_H
+
+#include "TObject.h"
+
+class AliESDMuonTrack : public TObject {
+ ClassDef(AliESDMuonTrack,1) //MUON ESD track class
+};
+
+#endif
else fR[3]=1.;} //
break;
- case kTRDin: case kTRDout: case kTRDrefit:
+ case kTRDout:
+ { //requested by the PHOS ("temporary solution")
+ Double_t r=474.;
+ t->PropagateTo(r,30.,0.);
+ fOalpha=fRalpha;
+ fOx=fRx;
+ Int_t i;
+ for (i=0; i<5; i++) fOp[i]=fRp[i];
+ for (i=0; i<15;i++) fOc[i]=fRc[i];
+ }
+ case kTRDin: case kTRDrefit:
fTRDncls=t->GetNumberOfClusters();
fTRDchi2=t->GetChi2();
for (Int_t i=0;i<fTRDncls;i++) fTRDindex[i]=t->GetClusterIndex(i);
xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fIp[1];
}
+void AliESDtrack::GetOuterPxPyPz(Double_t *p) const {
+ //---------------------------------------------------------------------
+ // This function returns the global track momentum components
+ // af the radius of the PHOS
+ //---------------------------------------------------------------------
+ Double_t phi=TMath::ASin(fOp[2]) + fOalpha;
+ Double_t pt=1./TMath::Abs(fOp[4]);
+ p[0]=pt*TMath::Cos(phi); p[1]=pt*TMath::Sin(phi); p[2]=pt*fOp[3];
+}
+
+void AliESDtrack::GetOuterXYZ(Double_t *xyz) const {
+ //---------------------------------------------------------------------
+ // This function returns the global track position
+ // af the radius of the PHOS
+ //---------------------------------------------------------------------
+ Double_t phi=TMath::ATan2(fOp[0],fOx) + fOalpha;
+ Double_t r=TMath::Sqrt(fOx*fOx + fOp[0]*fOp[0]);
+ xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fOp[1];
+}
+
//_______________________________________________________________________
void AliESDtrack::GetExternalCovariance(Double_t c[15]) const {
//---------------------------------------------------------------------
void GetInnerPxPyPz(Double_t *p) const;
void GetInnerXYZ(Double_t *r) const;
+ void GetOuterPxPyPz(Double_t *p) const;
+ void GetOuterXYZ(Double_t *r) const;
+
void SetTPCpid(const Double_t *p);
void GetTPCpid(Double_t *p) const;
Float_t GetTPCsignal() const {return fTPCsignal;}
Double_t fRp[5]; // external track parameters
Double_t fRc[15]; // external cov. matrix of the track parameters
-//Track parameters at the innermost measured point in the TPC
+//Track parameters at the inner wall of the TPC
Double_t fIalpha,fIx,fIp[5],fIc[15];
-//Track parameters at the outermost measured point
- //Double_t fOalpha,fOx,fOp[5],fOc[15];
+//Track parameters at the radius of the PHOS
+ Double_t fOalpha,fOx,fOp[5],fOc[15];
// ITS related track information
Float_t fITSchi2; // chi2 in the ITS
#pragma link C++ global gAlice;
#pragma link C++ global gMC;
-#pragma link C++ global kAliDetMax;
-#pragma link C++ global kAliDetAll;
#pragma link C++ enum VertexSmear_t;
#pragma link C++ enum VertexSource_t;
#pragma link C++ class AliTrackReference+;
#pragma link C++ class AliESD+;
#pragma link C++ class AliESDtrack+;
+#pragma link C++ class AliESDCaloTrack+;
+#pragma link C++ class AliESDMuonTrack+;
#pragma link C++ class AliESDv0+;
#pragma link C++ class AliESDcascade+;
#pragma link C++ class AliESDvertex+;
#pragma link C++ class AliMemoryWatcher+;
#pragma link C++ class AliBarrelTrack+;
#pragma link C++ class AliMC+;
-#pragma link C++ class AliSimulation+;
#endif
AliGausCorr.cxx AliTrackReference.cxx AliESD.cxx \
AliTrackMap.cxx AliTrackMapper.cxx AliCollisionGeometry.cxx \
AliMemoryWatcher.cxx AliBarrelTrack.cxx \
-AliESDtrack.cxx AliESDv0.cxx AliESDcascade.cxx AliESDvertex.cxx AliESDpid.cxx \
-AliMC.cxx AliSimulation.cxx
+AliESDtrack.cxx AliESDCaloTrack.cxx AliESDMuonTrack.cxx AliESDv0.cxx AliESDcascade.cxx AliESDvertex.cxx AliESDpid.cxx \
+AliMC.cxx
HDRS:= $(SRCS:.cxx=.h)
DHDR= STEERLinkDef.h