]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Track matching for AODs: add TPC only option, put it as default, update filter bit...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 12 May 2013 07:34:10 +0000 (07:34 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 12 May 2013 07:34:10 +0000 (07:34 +0000)
EMCAL/AliEMCALRecoUtils.cxx
EMCAL/AliEMCALRecoUtils.h

index 1d16b156a4900830b56919b653718594e3f19b3e..a15f430ff2ee6d6eaa2f5e0ff34a68bcc267667a 100644 (file)
@@ -71,7 +71,8 @@ AliEMCALRecoUtils::AliEMCALRecoUtils():
   fNCellsFromEMCALBorder(0),              fNoEMCALBorderAtEta0(kTRUE),
   fRejectExoticCluster(kFALSE),           fRejectExoticCells(kFALSE), 
   fExoticCellFraction(0),                 fExoticCellDiffTime(0),                 fExoticCellMinAmplitude(0),
-  fPIDUtils(),                            fAODFilterMask(0),                      fAODHybridTracks(0),
+  fPIDUtils(),                            fAODFilterMask(0),
+  fAODHybridTracks(0),                    fAODTPCOnlyTracks(0),
   fMatchedTrackIndex(0x0),                fMatchedClusterIndex(0x0), 
   fResidualEta(0x0), fResidualPhi(0x0),   fCutEtaPhiSum(kFALSE),                  fCutEtaPhiSeparate(kFALSE), 
   fCutR(0),                               fCutEta(0),                             fCutPhi(0),
@@ -119,7 +120,7 @@ AliEMCALRecoUtils::AliEMCALRecoUtils(const AliEMCALRecoUtils & reco)
   fExoticCellFraction(reco.fExoticCellFraction),             fExoticCellDiffTime(reco.fExoticCellDiffTime),               
   fExoticCellMinAmplitude(reco.fExoticCellMinAmplitude),
   fPIDUtils(reco.fPIDUtils),                                 fAODFilterMask(reco.fAODFilterMask),
-  fAODHybridTracks(reco.fAODHybridTracks),
+  fAODHybridTracks(reco.fAODHybridTracks),                   fAODTPCOnlyTracks(reco.fAODTPCOnlyTracks),
   fMatchedTrackIndex(  reco.fMatchedTrackIndex?  new TArrayI(*reco.fMatchedTrackIndex):0x0),
   fMatchedClusterIndex(reco.fMatchedClusterIndex?new TArrayI(*reco.fMatchedClusterIndex):0x0),
   fResidualEta(        reco.fResidualEta?        new TArrayF(*reco.fResidualEta):0x0),
@@ -194,6 +195,7 @@ AliEMCALRecoUtils & AliEMCALRecoUtils::operator = (const AliEMCALRecoUtils & rec
 
   fAODFilterMask             = reco.fAODFilterMask;
   fAODHybridTracks           = reco.fAODHybridTracks;
+  fAODTPCOnlyTracks          = reco.fAODTPCOnlyTracks;
   
   fCutEtaPhiSum              = reco.fCutEtaPhiSum;
   fCutEtaPhiSeparate         = reco.fCutEtaPhiSeparate;
@@ -997,8 +999,9 @@ void AliEMCALRecoUtils::InitParameters()
   fExoticCellDiffTime     = 1e6;
   fExoticCellMinAmplitude = 0.5;
   
-  fAODFilterMask   = 32;
-  fAODHybridTracks = kFALSE;
+  fAODFilterMask    = 128;
+  fAODHybridTracks  = kFALSE;
+  fAODTPCOnlyTracks = kTRUE;
   
   fCutEtaPhiSum      = kTRUE;
   fCutEtaPhiSeparate = kFALSE;
@@ -1878,12 +1881,22 @@ void AliEMCALRecoUtils::FindMatches(AliVEvent *event,
     {
       aodTrack = aodevent->GetTrack(itr);
       if(!aodTrack) continue;
-      
-      //Check mask if not hybrid
-      if(!fAODHybridTracks && !aodTrack->TestFilterMask(fAODFilterMask) ) continue; //Select AOD tracks that fulfill GetStandardITSTPCTrackCuts2010()
-      
-      //Check hybrid
-      if( fAODHybridTracks && !aodTrack->IsHybridGlobalConstrainedGlobal()) continue ;
+            
+      if(fAODTPCOnlyTracks) // Match with TPC only tracks, default from May 2013, before filter bit 32
+      {
+        //printf("Match with TPC only tracks, accept? %d, test bit 128 <%d> \n", aodTrack->IsTPCOnly(), aodTrack->TestFilterMask(128));
+        if(!aodTrack->IsTPCOnly()) continue ;
+      }
+      else if(fAODHybridTracks) // Match with hybrid tracks
+      {
+        //printf("Match with Hybrid tracks, accept? %d \n", aodTrack->IsHybridGlobalConstrainedGlobal());
+        if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue ;
+      }
+      else // Match with tracks on a mask
+      {
+        //printf("Match with tracks having filter bit mask %d, accept? %d \n",fAODFilterMask,aodTrack->TestFilterMask(fAODFilterMask));
+        if(!aodTrack->TestFilterMask(fAODFilterMask) ) continue; //Select AOD tracks
+      }
       
       if(aodTrack->Pt()<fCutMinTrackPt) continue;
 
@@ -2633,7 +2646,7 @@ void AliEMCALRecoUtils::Print(const Option_t *) const
 
   printf("Track cuts: \n");
   printf("Minimum track pT: %1.2f\n",fCutMinTrackPt);
-  printf("AOD track selection mask: %d\n",fAODFilterMask);
+  printf("AOD track selection: tpc only %d, or hybrid %d, or mask: %d\n",fAODTPCOnlyTracks,fAODHybridTracks, fAODFilterMask);
   printf("TPCRefit = %d, ITSRefit = %d\n",fCutRequireTPCRefit,fCutRequireITSRefit);
   printf("AcceptKinks = %d\n",fCutAcceptKinkDaughters);
   printf("MinNCulsterTPC = %d, MinNClusterITS = %d\n",fCutMinNClusterTPC,fCutMinNClusterITS);
index 7950d32aec5663e1972e7af506df6372868ddfc2..45801377ffe20b99fd7237942a2b393262cf6587 100644 (file)
@@ -349,11 +349,15 @@ public:
                                                        InitTrackCuts()                 ; }
   Int_t    GetTrackCutsType() const                  { return fTrackCutsType; }
 
-  void     SetAODTrackFilterMask( UInt_t mask)       {fAODFilterMask    = mask  ; }
-  void     SwitchOnAODHybridTracksMatch()            {fAODHybridTracks  = kTRUE ; }
-  void     SwitchOffAODHybridTracksMatch()           {fAODHybridTracks  = kFALSE ; }
-  
-  // track quality cut setters  
+  // Define AOD track type for matching
+  void     SwitchOffAODHybridTracksMatch()           { fAODHybridTracks         = kFALSE ; }
+  void     SwitchOffAODTPCOnlyTracksMatch()          { fAODTPCOnlyTracks        = kFALSE ; }
+  void     SwitchOnAODHybridTracksMatch()            { fAODHybridTracks         = kTRUE  ; SwitchOffAODTPCOnlyTracksMatch() ; }
+  void     SwitchOnAODTPCOnlyTracksMatch()           { fAODTPCOnlyTracks        = kTRUE  ; SwitchOffAODHybridTracksMatch()  ; }
+  void     SetAODTrackFilterMask( UInt_t mask)       { fAODFilterMask           = mask   ;
+                                                       SwitchOffAODTPCOnlyTracksMatch()  ; SwitchOffAODHybridTracksMatch()  ; }
+  
+  // track quality cut setters
   void     SetMinTrackPt(Double_t pt=0)              { fCutMinTrackPt           = pt   ; }
   void     SetMinNClustersTPC(Int_t min=-1)          { fCutMinNClusterTPC       = min  ; }
   void     SetMinNClustersITS(Int_t min=-1)          { fCutMinNClusterITS       = min  ; }
@@ -367,6 +371,7 @@ public:
   void     SetDCAToVertex2D(Bool_t b=kFALSE)         { fCutDCAToVertex2D        = b    ; }
   void     SetRequireITSStandAlone(Bool_t b=kFALSE)    {fCutRequireITSStandAlone = b;} //Marcel
   void     SetRequireITSPureStandAlone(Bool_t b=kFALSE){fCutRequireITSpureSA     = b;}
+  
   // getters                                                           
   Double_t GetMinTrackPt()                     const { return fCutMinTrackPt           ; }
   Int_t    GetMinNClusterTPC()                 const { return fCutMinNClusterTPC       ; }
@@ -433,6 +438,7 @@ private:
   //Track matching
   UInt_t     fAODFilterMask;             // Filter mask to select AOD tracks. Refer to $ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C
   Bool_t     fAODHybridTracks;           // Match with hybrid
+  Bool_t     fAODTPCOnlyTracks;          // Match with TPC only tracks
   
   TArrayI  * fMatchedTrackIndex;         // Array that stores indexes of matched tracks      
   TArrayI  * fMatchedClusterIndex;       // Array that stores indexes of matched clusters