Retrofeeded recent developement in from AliHBTReaderESD (ITS track points, additional...
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jun 2004 10:09:01 +0000 (10:09 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jun 2004 10:09:01 +0000 (10:09 +0000)
ANALYSIS/AliReaderESD.cxx
ANALYSIS/AliReaderESD.h

index d1844f4f00689e2e202995de7a4c844cc5e0e680..076cf0ac6e3c0ce178c177c2bf090cfb2d7848d8 100644 (file)
@@ -23,6 +23,7 @@
 #include <AliRunLoader.h>
 #include <AliStack.h>
 #include <AliESDtrack.h>
 #include <AliRunLoader.h>
 #include <AliStack.h>
 #include <AliESDtrack.h>
+#include <AliKalmanTrack.h>
 #include <AliESD.h>
 
 #include "AliAnalysis.h"
 #include <AliESD.h>
 
 #include "AliAnalysis.h"
@@ -47,6 +48,8 @@ AliReaderESD::AliReaderESD(const Char_t* esdfilename, const Char_t* galfilename)
  fNTrackPoints(0),
  fdR(0.0),
  fClusterMap(kFALSE),
  fNTrackPoints(0),
  fdR(0.0),
  fClusterMap(kFALSE),
+ fITSTrackPoints(kFALSE),
+ fMustTPC(kFALSE),
  fNTPCClustMin(0),
  fNTPCClustMax(150),
  fTPCChi2PerClustMin(0.0),
  fNTPCClustMin(0),
  fNTPCClustMax(150),
  fTPCChi2PerClustMin(0.0),
@@ -94,6 +97,8 @@ AliReaderESD::AliReaderESD(TObjArray* dirs,const Char_t* esdfilename, const Char
  fNTrackPoints(0),
  fdR(0.0),
  fClusterMap(kFALSE),
  fNTrackPoints(0),
  fdR(0.0),
  fClusterMap(kFALSE),
+ fITSTrackPoints(kFALSE),
+ fMustTPC(kFALSE),
  fNTPCClustMin(0),
  fNTPCClustMax(150),
  fTPCChi2PerClustMin(0.0),
  fNTPCClustMin(0),
  fNTPCClustMax(150),
  fTPCChi2PerClustMin(0.0),
@@ -258,12 +263,18 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
    
   Float_t mf = esd->GetMagneticField(); 
 
    
   Float_t mf = esd->GetMagneticField(); 
 
-  if ( (mf == 0.0) && (fNTrackPoints > 0) )
+  if ( (mf == 0.0) && ((fNTrackPoints > 0) || fITSTrackPoints) )
    {
       Error("ReadESD","Magnetic Field is 0 and Track Points Demended. Skipping to next event.");
       return 1;
    }
 
    {
       Error("ReadESD","Magnetic Field is 0 and Track Points Demended. Skipping to next event.");
       return 1;
    }
 
+  if (fITSTrackPoints)
+   {
+     Info("ReadESD","Magnetic Field is %f",mf/10.);
+     AliKalmanTrack::SetMagneticField(mf/10.);
+   }
   AliStack* stack = 0x0;
   if (fReadSim && fRunLoader)
    {
   AliStack* stack = 0x0;
   if (fReadSim && fRunLoader)
    {
@@ -310,6 +321,16 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
         continue;
       }
 
         continue;
       }
 
+     if (fMustTPC)
+      {
+       if ((esdtrack->GetStatus() & AliESDtrack::kTPCin) == kFALSE)
+        {
+          if (AliVAODParticle::GetDebug() > 2) 
+            Info("ReadNext","Particle skipped: Was not reconstructed in TPC.");
+          continue;
+        }
+      }     
+
      if ((esdtrack->GetStatus() & AliESDtrack::kESDpid) == kFALSE) 
       {
         if (AliVAODParticle::GetDebug() > 2) 
      if ((esdtrack->GetStatus() & AliESDtrack::kESDpid) == kFALSE) 
       {
         if (AliVAODParticle::GetDebug() > 2) 
@@ -348,12 +369,16 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
            Error("ReadNext","Can not find track with such label.");
            continue;
          }
            Error("ReadNext","Can not find track with such label.");
            continue;
          }
-        if(Pass(p->GetPdgCode())) 
+         
+        if (fCheckParticlePID)
          {
          {
-           if ( AliVAODParticle::GetDebug() > 5 )
-             Info("ReadNext","Simulated Particle PID (%d) did not pass the cut.",p->GetPdgCode());
-           continue; //check if we are intersted with particles of this type 
-         }
+           if(Pass(p->GetPdgCode())) 
+            {
+              if ( AliVAODParticle::GetDebug() > 5 )
+                Info("ReadNext","Simulated Particle PID (%d) did not pass the cut.",p->GetPdgCode());
+              continue; //check if we are intersted with particles of this type 
+            }
+         }  
 //           if(p->GetPdgCode()<0) charge = -1;
         particle = new AliAODParticle(*p,i);
 
 //           if(p->GetPdgCode()<0) charge = -1;
         particle = new AliAODParticle(*p,i);
 
@@ -398,6 +423,14 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
       if (fNTrackPoints > 0) 
        {
          tpts = new AliTrackPoints(fNTrackPoints,esdtrack,mf,fdR);
       if (fNTrackPoints > 0) 
        {
          tpts = new AliTrackPoints(fNTrackPoints,esdtrack,mf,fdR);
+         tpts->Move(-vertexpos[0],-vertexpos[1],-vertexpos[2]);
+       }
+
+      AliTrackPoints* itstpts = 0x0;
+      if (fITSTrackPoints) 
+       {
+         itstpts = new AliTrackPoints(AliTrackPoints::kITS,esdtrack);
+         itstpts->Move(-vertexpos[0],-vertexpos[1],-vertexpos[2]);
        }
 
       AliClusterMap* cmap = 0x0; 
        }
 
       AliClusterMap* cmap = 0x0; 
@@ -477,6 +510,11 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
          {
            track->SetTPCTrackPoints(tpts);
          }
          {
            track->SetTPCTrackPoints(tpts);
          }
+         
+        if (itstpts)
+         {
+           track->SetITSTrackPoints(itstpts); 
+         }
 
         if (cmap) 
          { 
 
         if (cmap) 
          { 
@@ -500,8 +538,23 @@ Int_t AliReaderESD::ReadESD(AliESD* esd)
       {
         delete particle;//particle was not stored in event
         delete tpts;
       {
         delete particle;//particle was not stored in event
         delete tpts;
+        delete itstpts;
         delete cmap;
       }
         delete cmap;
       }
+     else
+      {
+        if (particle->P() < 0.00001)
+         {
+           Info("ReadNext","###################################");
+           Info("ReadNext","###################################");
+           Info("ReadNext","Track Label %d",esdtrack->GetLabel());
+           TParticle *p = stack->Particle(esdtrack->GetLabel());
+           Info("ReadNext","");
+           p->Print();
+           Info("ReadNext","");
+           particle->Print();
+         }
+      } 
 
    }//for (Int_t i = 0;i<ntr; i++)  -- loop over tracks
 
 
    }//for (Int_t i = 0;i<ntr; i++)  -- loop over tracks
 
index 7e9e3d9c07d8a0ef90d77646a21fd5e0b49102d2..2636a9b46b497447d340c2dbeb393abacb2efd74 100644 (file)
@@ -51,6 +51,8 @@ class AliReaderESD: public AliReader
     void          SetNumberOfTrackPoints(Int_t n = 5,Float_t dr = 30.0) {fNTrackPoints = n; fdR = dr;}
     Int_t         GetNumberOfTrackPoints() const {return fNTrackPoints;}
     void          SetClusterMap(Bool_t flag = kTRUE){fClusterMap = flag;}
     void          SetNumberOfTrackPoints(Int_t n = 5,Float_t dr = 30.0) {fNTrackPoints = n; fdR = dr;}
     Int_t         GetNumberOfTrackPoints() const {return fNTrackPoints;}
     void          SetClusterMap(Bool_t flag = kTRUE){fClusterMap = flag;}
+    void          SetITSTrackPoints(Bool_t flag = kTRUE){fITSTrackPoints = flag;}
+    void          MustTPC(Bool_t flag){fMustTPC = flag;}
 
     
     enum ESpecies {kESDElectron = 0, kESDMuon, kESDPion, kESDKaon, kESDProton, kNSpecies};
 
     
     enum ESpecies {kESDElectron = 0, kESDMuon, kESDPion, kESDKaon, kESDProton, kNSpecies};
@@ -78,6 +80,12 @@ class AliReaderESD: public AliReader
     Bool_t        fClusterMap;//Flag indicating if Claster Map should be created for each track
                               //Claster map is needed for Anti-Splitting Cut
 
     Bool_t        fClusterMap;//Flag indicating if Claster Map should be created for each track
                               //Claster map is needed for Anti-Splitting Cut
 
+    Bool_t        fITSTrackPoints;//Flag indicalting if track positions in ITS are to be read
+                                  //currently we use only position at first pixels wich are
+                     //used by anti-merging cut in non-id analysis
+
+    Bool_t        fMustTPC;// must be reconstructed in TPC -> reject tracks reconstructed ITS stand alone
+    
     //Cut Parameters specific to TPC tracks
         
     Int_t         fNTPCClustMin;//Number of clusters min value
     //Cut Parameters specific to TPC tracks
         
     Int_t         fNTPCClustMin;//Number of clusters min value