]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliReconstruction.cxx
Cleaning the ESD: first step
[u/mrichter/AliRoot.git] / STEER / AliReconstruction.cxx
index 3afefee61c802fd49331556cb969117015e965e3..4938b0aebfdb0d6fd56442acc4203ff7ec072475 100644 (file)
 #include "AliRawReaderRoot.h"
 #include "AliRawEventHeaderBase.h"
 #include "AliESDEvent.h"
+#include "AliESDMuonTrack.h"
 #include "AliESDfriend.h"
 #include "AliESDVertex.h"
+#include "AliESDcascade.h"
+#include "AliESDkink.h"
+#include "AliESDtrack.h"
+#include "AliESDCaloCluster.h"
 #include "AliMultiplicity.h"
 #include "AliTracker.h"
 #include "AliVertexer.h"
 #include "AliESDpid.h"
 #include "AliESDtrack.h"
 
-#include "AliTagCreator.h"
+#include "AliESDTagCreator.h"
 
 #include "AliGeomManager.h"
 #include "AliTrackPointArray.h"
@@ -182,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),
@@ -231,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),
@@ -768,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);
@@ -819,9 +827,9 @@ Bool_t AliReconstruction::Run(const char* input)
   
   // Create tags for the events in the ESD tree (the ESD tree is always present)
   // In case of empty events the tags will contain dummy values
-  AliTagCreator *tagCreator = new AliTagCreator();
-  tagCreator->CreateESDTags(fFirstEvent,fLastEvent);
-  if (fWriteAOD) tagCreator->CreateAODTags(fFirstEvent,fLastEvent);
+  AliESDTagCreator *esdtagCreator = new AliESDTagCreator();
+  esdtagCreator->CreateESDTags(fFirstEvent,fLastEvent);
+  //if (fWriteAOD) tagCreator->CreateAODTags(fFirstEvent,fLastEvent);
 
   return kTRUE;
 }
@@ -1240,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; i<nTracks; i++) {
+    AliESDtrack *track=esd->GetTrack(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)
 {
@@ -2336,8 +2370,8 @@ void AliReconstruction::ESDFile2AODFile(TFile* esdFile, TFile* aodFile)
                                             0, // no ITSClusterMap
                                             pid,
                                             primary,
-                                            kTRUE,  // check if this is right
-                                            kTRUE,  // not used for vertex fit
+                                            kFALSE,    // muon tracks are not used to fit the primary vtx
+                                            kFALSE,    // not used for vertex fit
                                             AliAODTrack::kPrimary)
          );
     }