From: belikov Date: Wed, 1 Aug 2007 15:05:46 +0000 (+0000) Subject: Cleaning the ESD: first step X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=d64bd07d1a03056aca774b9c11ca9180bba125a3;p=u%2Fmrichter%2FAliRoot.git Cleaning the ESD: first step --- diff --git a/STEER/AliESD.cxx b/STEER/AliESD.cxx index b54ad043afd..576e276954a 100644 --- a/STEER/AliESD.cxx +++ b/STEER/AliESD.cxx @@ -213,6 +213,25 @@ void AliESD::Reset() fErrorLogs.Clear(); } +Bool_t AliESD::RemoveTrack(Int_t /*i*/) { + // --------------------------------------------------------- + // Remove track + // --------------------------------------------------------- + + // Check if this track comes from a reconstructed decay + // if (yes) return kFALSE + + // Remap the indices of the daughters of recosntructed decays + + // Remove the track + // delete fTracks->RemoveAt(i); + + // Compress the array with tracks + // fTracks->Compress(); + + return kTRUE; +} + Int_t AliESD::AddV0(const AliESDv0 *v) { // // Add V0 diff --git a/STEER/AliESD.h b/STEER/AliESD.h index 13026e518a0..1daea4764ab 100644 --- a/STEER/AliESD.h +++ b/STEER/AliESD.h @@ -75,6 +75,8 @@ public: return (AliESDTrdTrack *)fTrdTracks.UncheckedAt(i); } + Bool_t RemoveTrack(Int_t i); + Int_t AddTrack(const AliESDtrack *t) { AliESDtrack * track = new(fTracks[fTracks.GetEntriesFast()]) AliESDtrack(*t); track->SetID(fTracks.GetEntriesFast()-1); diff --git a/STEER/AliESDEvent.cxx b/STEER/AliESDEvent.cxx index cd4772aa38c..dbb22bd7b55 100644 --- a/STEER/AliESDEvent.cxx +++ b/STEER/AliESDEvent.cxx @@ -372,6 +372,26 @@ void AliESDEvent::SetESDfriend(const AliESDfriend *ev) { } } +Bool_t AliESDEvent::RemoveTrack(Int_t /*i*/) { + // --------------------------------------------------------- + // Remove track + // --------------------------------------------------------- + + // Check if this track comes from a reconstructed decay + // if (yes) return kFALSE + + // Remap the indices of the daughters of recosntructed decays + + // Remove the track + // delete fTracks->RemoveAt(i); + + // Compress the array with tracks + // fTracks->Compress(); + + return kTRUE; +} + + Int_t AliESDEvent::AddTrack(const AliESDtrack *t) { // Add track TClonesArray &ftr = *fTracks; diff --git a/STEER/AliESDEvent.h b/STEER/AliESDEvent.h index fe53fcf23f4..c24398187fc 100644 --- a/STEER/AliESDEvent.h +++ b/STEER/AliESDEvent.h @@ -173,7 +173,8 @@ public: const AliMultiplicity *GetMultiplicity() const {return fSPDMult;} - + Bool_t RemoveTrack(Int_t i); + AliESDtrack *GetTrack(Int_t i) const { return (AliESDtrack *)fTracks->UncheckedAt(i); } diff --git a/STEER/AliReconstruction.cxx b/STEER/AliReconstruction.cxx index 60d045c1f38..4938b0aebfd 100644 --- a/STEER/AliReconstruction.cxx +++ b/STEER/AliReconstruction.cxx @@ -187,6 +187,7 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename, const char* cdb fRunMuonTracking(kFALSE), fStopOnError(kFALSE), fWriteAlignmentData(kFALSE), + fCleanESD(kTRUE), fWriteESDfriend(kFALSE), fWriteAOD(kFALSE), fFillTriggerESD(kTRUE), @@ -236,6 +237,7 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) : fRunMuonTracking(rec.fRunMuonTracking), fStopOnError(rec.fStopOnError), fWriteAlignmentData(rec.fWriteAlignmentData), + fCleanESD(rec.fCleanESD), fWriteESDfriend(rec.fWriteESDfriend), fWriteAOD(rec.fWriteAOD), fFillTriggerESD(rec.fFillTriggerESD), @@ -773,6 +775,7 @@ Bool_t AliReconstruction::Run(const char* input) } // write ESD + if (fCleanESD) CleanESD(esd); if (fWriteESDfriend) { new (esdf) AliESDfriend(); // Reset... esd->GetESDfriend(esdf); @@ -1245,6 +1248,32 @@ Bool_t AliReconstruction::RunTracking(AliESDEvent*& esd) return kTRUE; } +//_____________________________________________________________________________ +Bool_t AliReconstruction::CleanESD(AliESDEvent *esd){ + // + // Remove the data which are not needed for the physics analysis. + // + + AliInfo("Cleaning the ESD..."); + + const AliESDVertex *vertex=esd->GetVertex(); + Double_t vz=vertex->GetZv(); + + Int_t nTracks=esd->GetNumberOfTracks(); + for (Int_t i=0; iGetTrack(i); + + Float_t xy,z; track->GetImpactParameters(xy,z); + if (TMath::Abs(xy) < 50.) continue; + if (vertex->GetStatus()) + if (TMath::Abs(vz-z) < 5.) continue; + + esd->RemoveTrack(i); + } + + return kTRUE; +} + //_____________________________________________________________________________ Bool_t AliReconstruction::FillESD(AliESDEvent*& esd, const TString& detectors) { diff --git a/STEER/AliReconstruction.h b/STEER/AliReconstruction.h index 615534dd4a4..1af41fe507c 100644 --- a/STEER/AliReconstruction.h +++ b/STEER/AliReconstruction.h @@ -74,6 +74,7 @@ public: void SetRunHLTTracking(Bool_t flag=kTRUE) {fRunHLTTracking=flag;}; void SetStopOnError(Bool_t flag=kTRUE) {fStopOnError=flag;} void SetWriteAlignmentData(Bool_t flag=kTRUE){fWriteAlignmentData=flag;} + void SetCleanESD(Bool_t flag=kTRUE){fCleanESD=flag;} void SetWriteESDfriend(Bool_t flag=kTRUE){fWriteESDfriend=flag;} void SetWriteAOD(Bool_t flag=kTRUE){fWriteAOD=flag;} void SetFillTriggerESD(Bool_t flag=kTRUE){fFillTriggerESD=flag;} @@ -104,6 +105,7 @@ private: Bool_t RunHLTTracking(AliESDEvent*& esd); Bool_t RunMuonTracking(AliESDEvent*& esd); Bool_t RunTracking(AliESDEvent*& esd); + Bool_t CleanESD(AliESDEvent *esd); Bool_t FillESD(AliESDEvent*& esd, const TString& detectors); Bool_t FillTriggerESD(AliESDEvent*& esd); Bool_t FillRawEventHeaderESD(AliESDEvent*& esd); @@ -132,6 +134,7 @@ private: Bool_t fRunMuonTracking; // run the HLT tracking Bool_t fStopOnError; // stop or continue on errors Bool_t fWriteAlignmentData; // write track space-points flag + Bool_t fCleanESD; // clean ESD flag Bool_t fWriteESDfriend; // write ESD friend flag Bool_t fWriteAOD; // write AOD flag Bool_t fFillTriggerESD; // fill trigger info into ESD @@ -168,7 +171,7 @@ private: TString fCDBUri; // Uri of the default CDB storage TObjArray fSpecCDBUri; // Array with detector specific CDB storages - ClassDef(AliReconstruction, 11) // class for running the reconstruction + ClassDef(AliReconstruction, 12) // class for running the reconstruction }; #endif