From 561b7b31952b4a88d377388233ba243dae0a8bba Mon Sep 17 00:00:00 2001 From: hristov Date: Wed, 31 Mar 2004 08:19:05 +0000 Subject: [PATCH] Adding PMD tracks to ESD (B.Nandi) --- STEER/AliESD.cxx | 2 + STEER/AliESD.h | 12 +++++- STEER/AliESDPmdTest.C | 81 ++++++++++++++++++++++++++++++++++++++++ STEER/AliESDPmdTrack.cxx | 25 +++++++++++++ STEER/AliESDPmdTrack.h | 35 +++++++++++++++++ STEER/STEERLinkDef.h | 3 +- STEER/libSTEER.pkg | 2 +- 7 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 STEER/AliESDPmdTest.C create mode 100644 STEER/AliESDPmdTrack.cxx create mode 100644 STEER/AliESDPmdTrack.h diff --git a/STEER/AliESD.cxx b/STEER/AliESD.cxx index 4b5bb2e8c82..40a3a6e8a97 100644 --- a/STEER/AliESD.cxx +++ b/STEER/AliESD.cxx @@ -38,6 +38,7 @@ AliESD::AliESD(): fTracks("AliESDtrack",15000), fCaloTracks("AliESDCaloTrack",500), fMuonTracks("AliESDMuonTrack",30), + fPmdTracks("AliESDPmdTrack",3000), fV0s("AliESDv0",200), fCascades("AliESDcascade",20) { @@ -60,6 +61,7 @@ void AliESD::Print(Option_t *) const { printf(" charged %d\n",GetNumberOfTracks()); printf(" calo %d\n", GetNumberOfCaloTracks()); printf(" muon %d\n", GetNumberOfMuonTracks()); + printf(" pmd %d\n", GetNumberOfPmdTracks()); printf(" v0 %d\n", GetNumberOfV0s()); printf(" cascades %d\n)", GetNumberOfCascades()); } diff --git a/STEER/AliESD.h b/STEER/AliESD.h index 8f950a73dad..08f4e1fba2c 100644 --- a/STEER/AliESD.h +++ b/STEER/AliESD.h @@ -17,8 +17,9 @@ #include "TClonesArray.h" #include "AliESDVertex.h" #include "AliESDtrack.h" -#include "AliESDMuonTrack.h" #include "AliESDCaloTrack.h" +#include "AliESDMuonTrack.h" +#include "AliESDPmdTrack.h" #include "AliESDv0.h" #include "AliESDcascade.h" @@ -29,6 +30,7 @@ public: fTracks.Delete(); fCaloTracks.Delete(); fMuonTracks.Delete(); + fPmdTracks.Delete(); fV0s.Delete(); fCascades.Delete(); } @@ -48,6 +50,9 @@ public: AliESDMuonTrack *GetMuonTrack(Int_t i) const { return (AliESDMuonTrack *)fMuonTracks.UncheckedAt(i); } + AliESDPmdTrack *GetPmdTrack(Int_t i) const { + return (AliESDPmdTrack *)fPmdTracks.UncheckedAt(i); + } void AddTrack(const AliESDtrack *t) { new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t); @@ -58,6 +63,9 @@ public: void AddMuonTrack(const AliESDMuonTrack *t) { new(fMuonTracks[fMuonTracks.GetEntriesFast()]) AliESDMuonTrack(*t); } + void AddPmdTrack(const AliESDPmdTrack *t) { + new(fPmdTracks[fPmdTracks.GetEntriesFast()]) AliESDPmdTrack(*t); + } AliESDv0 *GetV0(Int_t i) const { return (AliESDv0 *)fV0s.UncheckedAt(i); @@ -85,6 +93,7 @@ public: Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();} Int_t GetNumberOfCaloTracks() const {return fCaloTracks.GetEntriesFast();} Int_t GetNumberOfMuonTracks() const {return fMuonTracks.GetEntriesFast();} + Int_t GetNumberOfPmdTracks() const {return fPmdTracks.GetEntriesFast();} Int_t GetNumberOfV0s() const {return fV0s.GetEntriesFast();} Int_t GetNumberOfCascades() const {return fCascades.GetEntriesFast();} @@ -108,6 +117,7 @@ protected: TClonesArray fTracks; // ESD tracks TClonesArray fCaloTracks; // Calorimeters' ESD tracks TClonesArray fMuonTracks; // MUON ESD tracks + TClonesArray fPmdTracks; // PMD ESD tracks TClonesArray fV0s; // V0 vertices TClonesArray fCascades; // Cascade vertices diff --git a/STEER/AliESDPmdTest.C b/STEER/AliESDPmdTest.C new file mode 100644 index 00000000000..9fd8045cc60 --- /dev/null +++ b/STEER/AliESDPmdTest.C @@ -0,0 +1,81 @@ +// ----------------------------------------------------// +// // +// This macro reads the PMD clusters, // +// does photon/hadron discrimination // +// and stores in the ESD // +// // +// ----------------------------------------------------// + +#include +#include "TBranch.h" +#include "TStopwatch.h" + +extern AliRun *gAlice; + +Int_t AliESDPmdTest(Int_t nevent = 1) +{ + if (gAlice) + { + delete gAlice->GetRunLoader(); + delete gAlice;//if everything was OK here it is already NULL + gAlice = 0x0; + } + + AliRunLoader *fRunLoader = AliRunLoader::Open("galice.root"); + if (!fRunLoader) + { + cerr<<"Can't load RunLoader"<LoadgAlice(); + gAlice = fRunLoader->GetAliRun(); + + AliLoader *pmdloader = fRunLoader->GetLoader("PMDLoader"); + // Int_t nevent = fRunLoader->GetNumberOfEvents(); + cout << " ************ nevent = " << nevent << endl; + + if (pmdloader == 0x0) + { + cerr<<" ===> Can not find PMD or PMDLoader <===\n"; + delete fRunLoader; + return 2; + } + pmdloader->LoadRecPoints("READ"); + + TFile *bf=TFile::Open("AliESDcheck.root","RECREATE"); + if (!bf || !bf->IsOpen()) { + cerr<<"Can't open AliESDcheck.root !\n"; return 1; + } + + Char_t ename[100]; + + for (Int_t ievt = 0; ievt < nevent; ievt++) + { + + AliESD *event=new AliESD(); + Int_t run = 0; + event->SetRunNumber(run); + event->SetEventNumber(ievt); + + fRunLoader->GetEvent(ievt); + TTree *treeR = pmdloader->TreeR(); + if (treeR == 0x0) + { + cout << " Can not get TreeR" << endl; + return 3; + } + AliPMDtracker *pmdtracker = new AliPMDtracker(); + pmdtracker->LoadClusters(treeR); + pmdtracker->Clusters2Tracks(event); + + bf->cd(); + sprintf(ename,"in%d",ievt); + event->Write(ename); bf->Flush(); + + delete pmdtracker; + delete event; + } + bf->Close(); + return 0; +} + diff --git a/STEER/AliESDPmdTrack.cxx b/STEER/AliESDPmdTrack.cxx new file mode 100644 index 00000000000..e93a8e54fb6 --- /dev/null +++ b/STEER/AliESDPmdTrack.cxx @@ -0,0 +1,25 @@ +#include "AliESDPmdTrack.h" + +ClassImp(AliESDPmdTrack) + +AliESDPmdTrack::AliESDPmdTrack (const AliESDPmdTrack& PMDTrack):TObject(PMDTrack) +{ + // Constructor + fDet = PMDTrack.fDet; + fTheta = PMDTrack.fTheta; + fPhi = PMDTrack.fPhi; + fCluADC = PMDTrack.fCluADC; + fCluPID = PMDTrack.fCluPID; +} +//--------------------------------------------------------------------------// +AliESDPmdTrack &AliESDPmdTrack::operator=(const AliESDPmdTrack& PMDTrack) +{ + // Copy constructor + if(&PMDTrack == this) return *this; + fDet = PMDTrack.fDet; + fTheta = PMDTrack.fTheta; + fPhi = PMDTrack.fPhi; + fCluADC = PMDTrack.fCluADC; + fCluPID = PMDTrack.fCluPID; + return *this; +} diff --git a/STEER/AliESDPmdTrack.h b/STEER/AliESDPmdTrack.h new file mode 100644 index 00000000000..4982b86f797 --- /dev/null +++ b/STEER/AliESDPmdTrack.h @@ -0,0 +1,35 @@ +#ifndef ALIESDPMDTRACK_H +#define ALIESDPMDTRACK_H + +#include "TObject.h" + +class AliESDPmdTrack : public TObject { + public: + AliESDPmdTrack(){} + virtual ~AliESDPmdTrack(){} + AliESDPmdTrack (const AliESDPmdTrack &PMDTrack); // copy constructor + AliESDPmdTrack &operator=(const AliESDPmdTrack &PMDTrack); // assignment op + + void SetDetector(Int_t idet) {fDet = idet;} + void SetTheta(Float_t theta) {fTheta = theta;} + void SetPhi(Float_t phi) {fPhi = phi;} + void SetClusterADC(Float_t cluadc) {fCluADC = cluadc;} + void SetClusterPID(Float_t clupid) {fCluPID = clupid;} + + Int_t GetDetector() const {return fDet;} + Float_t GetTheta() const {return fTheta;} + Float_t GetPhi() const {return fPhi;} + Float_t GetClusterADC() const {return fCluADC;} + Float_t GetClusterPID() const {return fCluPID;} + + protected: + Int_t fDet; // Detector, 0:PRE, 1:CPV + Float_t fTheta; // Theta of the Cluster in radian + Float_t fPhi; // Phi of the Cluster in radian + Float_t fCluADC; // Cluster Energy in ADC + Float_t fCluPID; // Cluster probability, 1: Photon, 0: Hadron + + ClassDef(AliESDPmdTrack,1) //PMD ESD track class +}; + +#endif diff --git a/STEER/STEERLinkDef.h b/STEER/STEERLinkDef.h index 64668640838..c619e310aaa 100644 --- a/STEER/STEERLinkDef.h +++ b/STEER/STEERLinkDef.h @@ -68,6 +68,8 @@ #pragma link C++ class AliESDtrack+; #pragma link C++ class AliESDCaloTrack+; #pragma link C++ class AliESDMuonTrack+; +#pragma link C++ class AliESDPmdTrack+; +#pragma link C++ class AliReconstructor+; #pragma link C++ class AliESDv0+; #pragma link C++ class AliESDcascade+; #pragma link C++ class AliESDVertex+; @@ -82,7 +84,6 @@ #pragma link C++ class AliReconstruction+; #pragma link C++ class AliVertexGenFile+; #pragma link C++ class AliVertexer+; -#pragma link C++ class AliReconstructor+; #endif diff --git a/STEER/libSTEER.pkg b/STEER/libSTEER.pkg index 4b257b6de36..4eee1a06cda 100644 --- a/STEER/libSTEER.pkg +++ b/STEER/libSTEER.pkg @@ -16,7 +16,7 @@ AliMergeCombi.cxx AliMagFMaps.cxx AliFieldMap.cxx \ AliGausCorr.cxx AliTrackReference.cxx AliESD.cxx \ AliTrackMap.cxx AliTrackMapper.cxx AliCollisionGeometry.cxx \ AliMemoryWatcher.cxx AliBarrelTrack.cxx \ -AliESDtrack.cxx AliESDCaloTrack.cxx AliESDMuonTrack.cxx AliESDv0.cxx AliESDcascade.cxx AliESDVertex.cxx AliESDpid.cxx \ +AliESDtrack.cxx AliESDCaloTrack.cxx AliESDMuonTrack.cxx AliESDPmdTrack.cxx AliESDv0.cxx AliESDcascade.cxx AliESDVertex.cxx AliESDpid.cxx \ AliVertexer.cxx \ AliMC.cxx AliSimulation.cxx AliReconstruction.cxx AliVertexGenFile.cxx \ AliReconstructor.cxx -- 2.43.0