]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetESDReader.cxx
track matching macros from Alberto
[u/mrichter/AliRoot.git] / JETAN / AliJetESDReader.cxx
index fbc81fa7a65dbb2f7dc389925a7d26b5cf08563e..4a71165dd4a13cf0c22a9597e7500535a954e629 100755 (executable)
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
+
+//------------------------------------------------------------------------- 
 // Jet ESD Reader 
 // ESD reader for jet analysis
 // Author: Mercedes Lopez Noriega (mercedes.lopez.noriega@cern.ch)
+//------------------------------------------------------------------------- 
+
 
 #include <Riostream.h>
 #include <TSystem.h>
 
 ClassImp(AliJetESDReader)
 
-AliJetESDReader::AliJetESDReader()
+AliJetESDReader::AliJetESDReader():
+  fMass(0),
+  fSign(0)
 {
   // Constructor    
-  printf("\nIn reader constructor\n");
   fReaderHeader = 0x0;
-  fMass = 0;
-  fSign = 0;
 }
 
 //____________________________________________________________________________
@@ -48,11 +50,8 @@ AliJetESDReader::~AliJetESDReader()
 
 void AliJetESDReader::OpenInputFiles()
 {
-  // Open input files
-  printf("\nOpening files\n");
   // chain for the ESDs
   fChain   = new TChain("esdTree");
-  fChainMC = new TChain("mcStackTree");
 
   // get directory and pattern name from the header
   const char* dirName=fReaderHeader->GetDirectory();
@@ -61,24 +60,26 @@ void AliJetESDReader::OpenInputFiles()
   // Add files matching patters to the chain
   void *dir  = gSystem->OpenDirectory(dirName);
   const char *name = 0x0;
+  int nesd = fReaderHeader->GetNesd();
+  int a = 0;
   while ((name = gSystem->GetDirEntry(dir))){
+    if (a>=nesd) continue;
     if (strstr(name,pattern)){
       printf("Adding %s\n",name);
       char path[256];
       sprintf(path,"%s/%s",dirName,name);
       fChain->AddFile(path,-1);
-      fChainMC->AddFile(path,-1);
-     }
+      a++;
+    }
   }
-
-  gSystem ->FreeDirectory(dir);
-  fChain  ->SetBranchAddress("ESD",    &fESD);
-  fChainMC->SetBranchAddress("Header", &fAliHeader);
-  fChainMC->SetBranchAddress("Stack",  &fArrayMC);
-
+  printf("%d ESDs added\n",a);
+  
+  gSystem->FreeDirectory(dir);
+  fChain->SetBranchAddress("ESD",    &fESD);
+  
   int nMax = fChain->GetEntries(); 
   printf("\nTotal number of events in chain= %d",nMax);
-
+  
   // set number of events in header
   if (fReaderHeader->GetLastEvent() == -1)
     fReaderHeader->SetLastEvent(nMax);
@@ -92,62 +93,59 @@ void AliJetESDReader::OpenInputFiles()
 
 void AliJetESDReader::FillMomentumArray(Int_t event)
 {
-  // Fill the momentum array for each track
+  // Fill momentum array
+
   Int_t goodTrack = 0;
   Int_t nt = 0;
   Float_t pt, eta;
   TVector3 p3;
-
+  
   // clear momentum array
   ClearArray();
-
+  
   // get event from chain
   fChain->GetEntry(event);
-  fChainMC->GetEntry(event);
-
+  
   // get number of tracks in event (for the loop)
   nt = fESD->GetNumberOfTracks();
- // temporary storage of signal and pt cut flag
+  
 // temporary storage of signal and pt cut flag
   Int_t* sflag  = new Int_t[nt];
   Int_t* cflag  = new Int_t[nt];
-
+  
   // get cuts set by user
   Float_t ptMin = fReaderHeader->GetPtCut();
   Float_t etaMin = fReaderHeader->GetFiducialEtaMin();
   Float_t etaMax = fReaderHeader->GetFiducialEtaMax();  
-
+  
   //loop over tracks
   for (Int_t it = 0; it < nt; it++) {
-      AliESDtrack *track = fESD->GetTrack(it);
-      UInt_t status = track->GetStatus();
-
-      Double_t mom[3];
-      track->GetPxPyPz(mom);
-
-      p3.SetXYZ(mom[0],mom[1],mom[2]);
-      pt = p3.Pt();
-      if (((status & AliESDtrack::kITSrefit) == 0) ||
-         ((status & AliESDtrack::kTPCrefit) == 0)) continue;    // quality check
-      if (((AliJetESDReaderHeader*) fReaderHeader)->ReadSignalOnly() 
-         && TMath::Abs(track->GetLabel()) > 10000)  continue;   // quality check
-      if (((AliJetESDReaderHeader*) fReaderHeader)->ReadBkgdOnly() 
-         && TMath::Abs(track->GetLabel()) < 10000)  continue;   // quality check
-      eta = p3.Eta();
-      if ( (eta > etaMax) || (eta < etaMin)) continue;           // checking eta cut
-
-      new ((*fMomentumArray)[goodTrack]) TLorentzVector(p3,p3.Mag());
-      sflag[goodTrack]=0;
-      if (TMath::Abs(track->GetLabel()) < 10000) sflag[goodTrack]=1;
-      cflag[goodTrack]=0;
-      if (pt > ptMin) cflag[goodTrack]=1;                       // pt cut
-      goodTrack++;
+    AliESDtrack *track = fESD->GetTrack(it);
+    UInt_t status = track->GetStatus();
+
+    Double_t mom[3];
+    track->GetPxPyPz(mom);
+    p3.SetXYZ(mom[0],mom[1],mom[2]);
+    pt = p3.Pt();
+    if ((status & AliESDtrack::kTPCrefit) == 0) continue;    // quality check
+    //if ((status & AliESDtrack::kITSrefit) == 0) continue;    // quality check
+    if (((AliJetESDReaderHeader*) fReaderHeader)->ReadSignalOnly() 
+       && TMath::Abs(track->GetLabel()) > 10000)  continue;   // quality check
+    if (((AliJetESDReaderHeader*) fReaderHeader)->ReadBkgdOnly() 
+       && TMath::Abs(track->GetLabel()) < 10000)  continue;   // quality check
+    eta = p3.Eta();
+    if ( (eta > etaMax) || (eta < etaMin)) continue;           // checking eta cut
+    
+    new ((*fMomentumArray)[goodTrack]) TLorentzVector(p3,p3.Mag());
+    sflag[goodTrack]=0;
+    if (TMath::Abs(track->GetLabel()) < 10000) sflag[goodTrack]=1;
+    cflag[goodTrack]=0;
+    if (pt > ptMin) cflag[goodTrack]=1;                       // pt cut
+    goodTrack++;
   }
   // set the signal flags
   fSignalFlag.Set(goodTrack,sflag);
   fCutFlag.Set(goodTrack,cflag);
-
-  //printf("\nIn event %d, number of good tracks %d \n", event, goodTrack);
 }