]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetAODReader.cxx
Avoid some overlaps.
[u/mrichter/AliRoot.git] / JETAN / AliJetAODReader.cxx
index bb286315b2930beeae0a7a00384df0b648251f57..0a2a479a113e0c32ec19afd360c8e78d20943c87 100644 (file)
@@ -122,7 +122,7 @@ void AliJetAODReader::ConnectTree(TTree* tree, TObject* /*data*/) {
 
 //____________________________________________________________________________
 
-Bool_t AliJetAODReader::FillMomentumArray(Int_t /*event*/)
+Bool_t AliJetAODReader::FillMomentumArray()
 {
   // Clear momentum array
   ClearArray();
@@ -134,7 +134,7 @@ Bool_t AliJetAODReader::FillMomentumArray(Int_t /*event*/)
   
   // get number of tracks in event (for the loop)
   Int_t nt = fAOD->GetNTracks();
-  printf("Fill Momentum Array %5d ", nt);
+  printf("AOD tracks: %5d ", nt);
   
   // temporary storage of signal and pt cut flag
   Int_t* sflag  = new Int_t[nt];
@@ -144,28 +144,34 @@ Bool_t AliJetAODReader::FillMomentumArray(Int_t /*event*/)
   Float_t ptMin =  fReaderHeader->GetPtCut();
   Float_t etaMin = fReaderHeader->GetFiducialEtaMin();
   Float_t etaMax = fReaderHeader->GetFiducialEtaMax();  
-  
+  UInt_t  filterMask =  ((AliJetAODReaderHeader*)fReaderHeader)->GetTestFilterMask();
   //loop over tracks
   Int_t aodTrack = 0;
   Float_t pt, eta;
   TVector3 p3;
+
   for (Int_t it = 0; it < nt; it++) {
-      AliAODTrack *track = fAOD->GetTrack(it);
-
-      Double_t mom[3] = {track->Px(),track->Py(),track->Pz()};
-      p3.SetXYZ(mom[0],mom[1],mom[2]);
-      pt = p3.Pt();
-      eta = p3.Eta();
-         if ( pt < ptMin )                      continue;      // checking pt  cut
-      if ( (eta > etaMax) || (eta < etaMin)) continue;      // checking eta cut
-      sflag[aodTrack]=1;
-      cflag[aodTrack]=1;
-         new ((*fMomentumArray)[aodTrack++]) TLorentzVector(p3,p3.Mag());
-         fRef->Add(track);
+    AliAODTrack *track = fAOD->GetTrack(it);
+    
+    Double_t mom[3] = {track->Px(),track->Py(),track->Pz()};
+    p3.SetXYZ(mom[0],mom[1],mom[2]);
+    pt = p3.Pt();
+    eta = p3.Eta();
+    if((filterMask>0)&&!(track->TestFilterBit(filterMask)))continue;
+    if ( pt < ptMin )                      continue;      // checking pt  cut
+    if ( (eta > etaMax) || (eta < etaMin)) continue;      // checking eta cut
+    sflag[aodTrack]=1;
+    cflag[aodTrack]=1;
+    new ((*fMomentumArray)[aodTrack++]) TLorentzVector(p3,p3.Mag());
+    fRef->Add(track);
   }
+  printf("Used AOD tracks: %5d ", aodTrack);
   // set the signal flags
   fSignalFlag.Set(aodTrack,sflag);
   fCutFlag.Set(aodTrack,cflag);
 
+  delete [] sflag;
+  delete [] cflag;
+  
   return kTRUE;
 }