ESD/AliTriggerClass.cxx
ESD/AliTriggerConfiguration.cxx
ESD/AliExpression.cxx
+ ESD/AliESDCosmicTrack.cxx
)
string( REPLACE ".cxx" ".h" HDRS "${SRCS}")
--- /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. *
+ **************************************************************************/
+//
+// derived from AliExternalTrackParam, itself is the trackpar at the upper end of the cosmic ray in TPC
+// its lower partner is fLowerTrackParam
+// number of cluster of the whole cosmic ray, its lever arm, chi2/ncls and impact parameters(D, Z) are also stored as important information of the combined TPC track quality
+//
+// Xianguo Lu
+// lu@physi.uni-heidelberg.de
+// Xianguo.Lu@cern.ch
+//
+
+#include "AliExternalTrackParam.h"
+#include "AliESDCosmicTrack.h"
+
+ClassImp(AliESDCosmicTrack);
+
+AliESDCosmicTrack::AliESDCosmicTrack():
+ AliExternalTrackParam()
+
+ , fLowerTrackParam(0x0)
+ , fX0UpperTrackParam(0x0)
+ , fX0LowerTrackParam(0x0)
+ , fInnerClusterUpper(0x0)
+ , fInnerClusterLower(0x0)
+
+ , fNCluster(-999)
+ , fLeverArm(-999)
+ , fChi2PerCluster(-999)
+ , fImpactD(-999)
+ , fImpactZ(-999)
+ , fIsReuse(-999)
+ , fFindableRatio(-999)
+{
+ //
+ // default constructor
+ // important to have default constructor in TTree
+ //
+ for(Int_t ii=0; ii<2; ii++)
+ fESDtrackIndex[ii] = 0;
+}
+
+AliESDCosmicTrack::AliESDCosmicTrack(const Int_t idUp, const Int_t idLow, const AliExternalTrackParam * trkparUp, const AliExternalTrackParam * trkparLow, const AliExternalTrackParam * parx0Up, const AliExternalTrackParam * parx0Low, const Int_t ncls, const Double_t la, const Double_t chi2, const Double_t impd, const Double_t impz, const Bool_t isreuse, const Double_t findable, const TVector3 innerclusterupper, const TVector3 innerclusterlower):
+ AliExternalTrackParam(*trkparUp)
+ , fLowerTrackParam(new AliExternalTrackParam(*trkparLow))
+ , fX0UpperTrackParam(new AliExternalTrackParam(*parx0Up))
+ , fX0LowerTrackParam(new AliExternalTrackParam(*parx0Low))
+ , fInnerClusterUpper(new TVector3(innerclusterupper))
+ , fInnerClusterLower(new TVector3(innerclusterlower))
+ , fNCluster(ncls)
+ , fLeverArm(la)
+ , fChi2PerCluster(chi2)
+ , fImpactD(impd)
+ , fImpactZ(impz)
+ , fIsReuse(isreuse)
+ , fFindableRatio(findable)
+{
+ //
+ // constructor
+ //
+ fESDtrackIndex[0] = idUp;
+ fESDtrackIndex[1] = idLow;
+}
+
+AliESDCosmicTrack::AliESDCosmicTrack(const AliESDCosmicTrack & costrk):
+ AliExternalTrackParam(costrk)
+ , fLowerTrackParam(new AliExternalTrackParam(*costrk.fLowerTrackParam))
+ , fX0UpperTrackParam(new AliExternalTrackParam(*costrk.fX0UpperTrackParam))
+ , fX0LowerTrackParam(new AliExternalTrackParam(*costrk.fX0LowerTrackParam))
+ , fInnerClusterUpper(new TVector3(*costrk.fInnerClusterUpper))
+ , fInnerClusterLower(new TVector3(*costrk.fInnerClusterLower))
+ , fNCluster(costrk.fNCluster)
+ , fLeverArm(costrk.fLeverArm)
+ , fChi2PerCluster(costrk.fChi2PerCluster)
+ , fImpactD(costrk.fImpactD)
+ , fImpactZ(costrk.fImpactZ)
+ , fIsReuse(costrk.fIsReuse)
+ , fFindableRatio(costrk.fFindableRatio)
+{
+ //
+ // copy constructor
+ //
+ for(Int_t ii=0; ii<2; ii++){
+ fESDtrackIndex[ii] = costrk.fESDtrackIndex[ii];
+ }
+}
+
+AliESDCosmicTrack &AliESDCosmicTrack::operator=(const AliESDCosmicTrack & costrk)
+{
+ //
+ // assignment operator
+ //
+ AliExternalTrackParam::operator=(costrk);
+ fLowerTrackParam = new AliExternalTrackParam(*costrk.fLowerTrackParam);
+ fX0UpperTrackParam = new AliExternalTrackParam(*costrk.fX0UpperTrackParam);
+ fX0LowerTrackParam = new AliExternalTrackParam(*costrk.fX0LowerTrackParam);
+ fInnerClusterUpper = new TVector3(*costrk.fInnerClusterUpper);
+ fInnerClusterLower = new TVector3(*costrk.fInnerClusterLower);
+ fNCluster = costrk.fNCluster;
+ fLeverArm = costrk.fLeverArm;
+ fChi2PerCluster = costrk.fChi2PerCluster;
+ fImpactD = costrk.fImpactD;
+ fImpactZ = costrk.fImpactZ;
+ fIsReuse = costrk.fIsReuse;
+ fFindableRatio = costrk.fFindableRatio;
+
+ for(Int_t ii=0; ii<2; ii++){
+ fESDtrackIndex[ii] = costrk.fESDtrackIndex[ii];
+ }
+ return *this;
+}
+
+AliESDCosmicTrack::~AliESDCosmicTrack()
+{
+ delete fLowerTrackParam;
+ delete fX0UpperTrackParam;
+ delete fX0LowerTrackParam;
+
+ delete fInnerClusterUpper;
+ delete fInnerClusterLower;
+}
+
--- /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. *
+ **************************************************************************/
+//
+//comment
+//comment
+//comment
+//comment
+//comment
+//
+//
+// Xianguo Lu
+// lu@physi.uni-heidelberg.de
+// Xianguo.Lu@cern.ch
+//
+
+
+#ifndef ALIESDCOSMICTRACK_H
+#define ALIESDCOSMICTRACK_H
+
+#ifndef TVECTOR3_H
+#include "TVector3.h"
+#endif
+
+class AliESDCosmicTrack: public AliExternalTrackParam
+{
+ public:
+ AliESDCosmicTrack();
+ AliESDCosmicTrack(const Int_t idUp, const Int_t idLow, const AliExternalTrackParam * trkparUp, const AliExternalTrackParam * trkparLow, const AliExternalTrackParam * parx0Up, const AliExternalTrackParam * parx0Low, const Int_t ncls, const Double_t la, const Double_t chi2, const Double_t vd, const Double_t vz, const Bool_t isreuse, const Double_t findable, const TVector3 innerclusterupper, const TVector3 innerclusterlower);
+ AliESDCosmicTrack(const AliESDCosmicTrack & costrk);
+ AliESDCosmicTrack &operator=(const AliESDCosmicTrack & costrk);
+
+ virtual ~AliESDCosmicTrack();
+
+ const AliExternalTrackParam * GetLowerPartner() const {return fLowerTrackParam;}
+ const AliExternalTrackParam * GetESDUpperTrackParamAt0() const {return fX0UpperTrackParam;}
+ const AliExternalTrackParam * GetESDLowerTrackParamAt0() const {return fX0LowerTrackParam;}
+ const TVector3* GetInnerClusterUpper()const{return fInnerClusterUpper;}
+ const TVector3* GetInnerClusterLower()const{return fInnerClusterLower;}
+
+ Int_t GetESDUpperTrackIndex() const {return fESDtrackIndex[0];}
+ Int_t GetESDLowerTrackIndex() const {return fESDtrackIndex[1];}
+
+ Int_t GetNCluster() const {return fNCluster;}
+ Double_t GetLeverArm() const {return fLeverArm;}
+ Double_t GetChi2PerCluster() const {return fChi2PerCluster;}
+ Double_t GetImpactD() const {return fImpactD;}
+ Double_t GetImpactZ() const {return fImpactZ;}
+ Bool_t IsReuse() const{return fIsReuse;}
+ Double_t GetMinFindableRatio()const{return fFindableRatio;}
+
+ private:
+ AliExternalTrackParam *fLowerTrackParam; //trackparameter estimated at lower-outer part of TPC
+ AliExternalTrackParam *fX0UpperTrackParam; //ESD upper trackparam at X=0
+ AliExternalTrackParam *fX0LowerTrackParam; //ESD lower trackparam at X=0
+ TVector3 *fInnerClusterUpper; //innermost TPC cluster, upper
+ TVector3 *fInnerClusterLower; //innermost TPC cluster, lower
+
+ Int_t fESDtrackIndex[2]; //[0]= ESD track for this object; [1]= ESD track for LowerTrackParma
+
+ Int_t fNCluster; //number of cls used in fit
+ Double_t fLeverArm; //lever arm
+ Double_t fChi2PerCluster; //chi2/ncls
+ Double_t fImpactD; //2d impact parameter
+ Double_t fImpactZ; //z of impact parameter
+ Bool_t fIsReuse; //true if one of the track from the pair already used in previous pair
+ Double_t fFindableRatio; //min of TPC ncls/nfindablecls of the two tracks
+
+ ClassDef(AliESDCosmicTrack, 1); //0: only data members derived from AliExternalTrackParam are saved in tree; 1: all are saved!!
+};
+
+#endif
+
+
#include "AliESDACORDE.h"
#include "AliESDHLTDecision.h"
#include "AliCentrality.h"
+#include "AliESDCosmicTrack.h"
#ifdef MFT_UPGRADE
#include "AliESDMFT.h"
#endif
"PHOSCells",
"AliRawDataErrorLogs",
"AliESDACORDE",
- "AliTOFHeader"
- #ifdef MFT_UPGRADE
+ "AliTOFHeader",
+ "CosmicTracks"
+ #ifdef MFT_UPGRADE
// , "AliESDMFT"
#endif
};
fKinks(0),
fCaloClusters(0),
fEMCALCells(0), fPHOSCells(0),
+ fCosmicTracks(0),
fErrorLogs(0),
fESDOld(0),
fESDFriendOld(0),
fCaloClusters(new TClonesArray(*esd.fCaloClusters)),
fEMCALCells(new AliESDCaloCells(*esd.fEMCALCells)),
fPHOSCells(new AliESDCaloCells(*esd.fPHOSCells)),
+ fCosmicTracks(new TClonesArray(*esd.fCosmicTracks)),
fErrorLogs(new TClonesArray(*esd.fErrorLogs)),
fESDOld(esd.fESDOld ? new AliESD(*esd.fESDOld) : 0),
fESDFriendOld(esd.fESDFriendOld ? new AliESDfriend(*esd.fESDFriendOld) : 0),
AddObject(fCaloClusters);
AddObject(fEMCALCells);
AddObject(fPHOSCells);
+ AddObject(fCosmicTracks);
AddObject(fErrorLogs);
AddObject(fESDACORDE);
AddObject(fTOFHeader);
if(fCaloClusters)fCaloClusters->Delete();
if(fPHOSCells)fPHOSCells->DeleteContainer();
if(fEMCALCells)fEMCALCells->DeleteContainer();
+ if(fCosmicTracks)fCosmicTracks->Delete();
if(fErrorLogs) fErrorLogs->Delete();
// don't reset fconnected fConnected and the list
printf(" CaloClusters %d\n", GetNumberOfCaloClusters());
printf(" FMD %s\n", (fESDFMD ? "yes" : "no"));
printf(" VZERO %s\n", (fESDVZERO ? "yes" : "no"));
+ if (fCosmicTracks) printf(" Cosmics %d\n", GetNumberOfCosmicTracks());
#ifdef MFT_UPGRADE
//printf(" MFT %s\n", (fESDMFT ? "yes" : "no"));
#endif
new(fc[fCascades->GetEntriesFast()]) AliESDcascade(*c);
}
+void AliESDEvent::AddCosmicTrack(const AliESDCosmicTrack *t)
+{
+ TClonesArray &ft = *fCosmicTracks;
+ new(ft[fCosmicTracks->GetEntriesFast()]) AliESDCosmicTrack(*t);
+}
+
Int_t AliESDEvent::AddCaloCluster(const AliESDCaloCluster *c)
{
fErrorLogs = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kErrorLogs]);
fESDACORDE = (AliESDACORDE*)fESDObjects->FindObject(fgkESDListName[kESDACORDE]);
fTOFHeader = (AliTOFHeader*)fESDObjects->FindObject(fgkESDListName[kTOFHeader]);
+ fCosmicTracks = (TClonesArray*)fESDObjects->FindObject(fgkESDListName[kCosmicTracks]);
#ifdef MFT_UPGRADE
// fESDMFT = (AliESDMFT*)fESDObjects->FindObject(fgkESDListName[kESDMFT]);
#endif
AddObject(new TClonesArray("AliRawDataErrorLog",0));
AddObject(new AliESDACORDE());
AddObject(new AliTOFHeader());
+ AddObject(new TClonesArray("AliESDCosmicTrack",0));
#ifdef MFT_UPGRADE
//AddObject(new AliESDMFT());
#endif
class TRefArray;
class AliESDACORDE;
class AliESDHLTDecision;
+class AliESDCosmicTrack;
class TList;
class TString;
kErrorLogs,
kESDACORDE,
kTOFHeader,
+ kCosmicTracks,
kESDListN
#ifdef MFT_UPGRADE
// , kESDMFT
else
return fPHOSTrigger;
}
+
+ AliESDCosmicTrack *GetCosmicTrack(Int_t i) const {
+ return fCosmicTracks ? (AliESDCosmicTrack*) fCosmicTracks->UncheckedAt(i) : 0;
+ }
+ const TClonesArray * GetCosmicTracks() const{ return fCosmicTracks;}
+
+ void AddCosmicTrack(const AliESDCosmicTrack *t);
AliRawDataErrorLog *GetErrorLog(Int_t i) const {
return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
Int_t GetNumberOfV0s() const {return fV0s?fV0s->GetEntriesFast():0;}
Int_t GetNumberOfCascades() const {return fCascades?fCascades->GetEntriesFast():0;}
Int_t GetNumberOfKinks() const {return fKinks?fKinks->GetEntriesFast():0;}
-
+
+ Int_t GetNumberOfCosmicTracks() const {return fCosmicTracks ? fCosmicTracks->GetEntriesFast():0;}
Int_t GetEMCALClusters(TRefArray *clusters) const;
Int_t GetPHOSClusters(TRefArray *clusters) const;
Int_t GetNumberOfCaloClusters() const {return fCaloClusters?fCaloClusters->GetEntriesFast():0;}
TClonesArray *fCaloClusters; //! Calorimeter clusters for PHOS/EMCAL
AliESDCaloCells *fEMCALCells; //! EMCAL cell info
AliESDCaloCells *fPHOSCells; //! PHOS cell info
+ TClonesArray *fCosmicTracks; //! Tracks created by cosmics finder
TClonesArray *fErrorLogs; //! Raw-data reading error messages
#pragma link C++ class AliTriggerConfiguration+;
#pragma link C++ class AliExpression+;
#pragma link C++ class AliVariableExpression+;
+#pragma link C++ class AliESDCosmicTrack+;
#pragma link C++ function AliESDUtils::GetCorrV0(const AliESDEvent*,Float_t &);
#pragma link C++ function AliESDUtils::GetCorrSPD2(Float_t,Float_t);