Moving AliESDCosmicTrack from TPC to STEER/ESD (Marian)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 24 Jan 2012 14:41:37 +0000 (14:41 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 24 Jan 2012 14:41:37 +0000 (14:41 +0000)
STEER/CMakelibESD.pkg
STEER/ESD/AliESDCosmicTrack.cxx [new file with mode: 0644]
STEER/ESD/AliESDCosmicTrack.h [new file with mode: 0644]
STEER/ESD/AliESDEvent.cxx
STEER/ESD/AliESDEvent.h
STEER/ESDLinkDef.h

index e5454fd..fec3876 100644 (file)
@@ -66,6 +66,7 @@ set ( SRCS
     ESD/AliTriggerClass.cxx 
     ESD/AliTriggerConfiguration.cxx 
     ESD/AliExpression.cxx
+    ESD/AliESDCosmicTrack.cxx
     )
 
 string( REPLACE ".cxx" ".h" HDRS "${SRCS}")
diff --git a/STEER/ESD/AliESDCosmicTrack.cxx b/STEER/ESD/AliESDCosmicTrack.cxx
new file mode 100644 (file)
index 0000000..ee68c9b
--- /dev/null
@@ -0,0 +1,134 @@
+/**************************************************************************
+ * 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;
+}
+
diff --git a/STEER/ESD/AliESDCosmicTrack.h b/STEER/ESD/AliESDCosmicTrack.h
new file mode 100644 (file)
index 0000000..e777fa7
--- /dev/null
@@ -0,0 +1,85 @@
+/**************************************************************************  
+ * 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
+
+
index 3b1144a..c774d20 100644 (file)
@@ -69,6 +69,7 @@
 #include "AliESDACORDE.h"
 #include "AliESDHLTDecision.h"
 #include "AliCentrality.h"
+#include "AliESDCosmicTrack.h"
 #ifdef MFT_UPGRADE
 #include "AliESDMFT.h"
 #endif
@@ -109,8 +110,9 @@ ClassImp(AliESDEvent)
                                                        "PHOSCells",
                                                        "AliRawDataErrorLogs",
                                                        "AliESDACORDE",
-                                                       "AliTOFHeader"
-                               #ifdef MFT_UPGRADE
+                                                       "AliTOFHeader",
+                                                        "CosmicTracks"
+                              #ifdef MFT_UPGRADE
 //                             , "AliESDMFT"
                                                        #endif
   };
@@ -145,6 +147,7 @@ AliESDEvent::AliESDEvent():
   fKinks(0),
   fCaloClusters(0),
   fEMCALCells(0), fPHOSCells(0),
+  fCosmicTracks(0),
   fErrorLogs(0),
   fESDOld(0),
   fESDFriendOld(0),
@@ -190,6 +193,7 @@ AliESDEvent::AliESDEvent(const AliESDEvent& esd):
   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),
@@ -233,6 +237,7 @@ AliESDEvent::AliESDEvent(const AliESDEvent& esd):
   AddObject(fCaloClusters);
   AddObject(fEMCALCells);
   AddObject(fPHOSCells);
+  AddObject(fCosmicTracks);
   AddObject(fErrorLogs);
   AddObject(fESDACORDE);
   AddObject(fTOFHeader);
@@ -506,6 +511,7 @@ void AliESDEvent::ResetStdContent()
   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
@@ -568,6 +574,7 @@ void AliESDEvent::Print(Option_t *) const
   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
@@ -1018,6 +1025,12 @@ void AliESDEvent::AddCascade(const AliESDcascade *c)
   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) 
 {
@@ -1225,6 +1238,7 @@ void AliESDEvent::GetStdContent()
   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
@@ -1289,6 +1303,7 @@ void AliESDEvent::CreateStdContent()
   AddObject(new TClonesArray("AliRawDataErrorLog",0));
   AddObject(new AliESDACORDE()); 
   AddObject(new AliTOFHeader());
+  AddObject(new TClonesArray("AliESDCosmicTrack",0));
   #ifdef MFT_UPGRADE
   //AddObject(new AliESDMFT());
   #endif
index acae513..41c13c1 100644 (file)
@@ -67,6 +67,7 @@ class AliEventplane;
 class TRefArray;
 class AliESDACORDE;
 class AliESDHLTDecision;
+class AliESDCosmicTrack;
 
 class TList;
 class TString;
@@ -105,6 +106,7 @@ public:
                       kErrorLogs,
                        kESDACORDE,
                       kTOFHeader,
+                       kCosmicTracks,
                       kESDListN
                   #ifdef MFT_UPGRADE
        //           , kESDMFT
@@ -414,6 +416,13 @@ public:
          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);
@@ -441,7 +450,8 @@ public:
   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;}
@@ -513,6 +523,7 @@ protected:
   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
  
 
index 6ca7d32..ac755d2 100644 (file)
 #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);