adding option for ITS-TPC hybdrid track sets, the aod track are flagged for separatio...
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Jun 2011 11:25:38 +0000 (11:25 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Jun 2011 11:25:38 +0000 (11:25 +0000)
ANALYSIS/AliAnalysisTaskESDfilter.cxx
ANALYSIS/AliAnalysisTaskESDfilter.h

index a5f6d87..4bec6db 100644 (file)
@@ -81,6 +81,9 @@ fNumberOfKinks(0),
 fOldESDformat(kFALSE),\r
 fPrimaryVertex(0x0),\r
 fTPCOnlyFilterMask(0),\r
+fHybridFilterMaskITSTPC(0),\r
+fHybridFilterMaskTPC0(0),\r
+fHybridFilterMaskTPC1(0),\r
 fIsVZEROEnabled(kTRUE),\r
 fAreCascadesEnabled(kTRUE),\r
 fAreV0sEnabled(kTRUE),\r
@@ -938,7 +941,18 @@ void AliAnalysisTaskESDfilter::ConvertV0s(const AliESDEvent& esd)
 void AliAnalysisTaskESDfilter::ConvertTPCOnlyTracks(const AliESDEvent& esd)\r
 {\r
   // Convert TPC only tracks\r
-  \r
+  // Here we have wo hybrid appraoch to remove fakes\r
+  // ******* ITSTPC ********\r
+  // Uses a cut on the ITS properties to select global tracks\r
+  // which are than marked as HybdridITSTPC for the remainder the TPC only tracks are \r
+  // flagged as HybridITSTPConly. Note, in order not to get fakes back in the TPC cuts, one needs \r
+  // two "ITS" cuts one tight (1) (to throw out fakes) and one lose (2) (to NOT flag the trakcs in the TPC only)\r
+  // using cut number (3)\r
+  // so fHybridFilterMask == (1)|(2) fTPCFilterMask = (3), Usercode needs to slect with mask = (1)|(3) and track->IsHybridITSTPC()\r
+  // ******* TPC ********\r
+  // Here, only TPC tracks are flagged that pass the tight ITS cuts and tracks that pass the TPC cuts and NOT the loose ITS cuts\r
+  // the ITS cuts neeed to be added to the filter as extra cuts, since here the selections info is reset in the global and put to the TPC only track\r
+\r
   AliCodeTimerAuto("",0);\r
   \r
   // Loop over the tracks and extract and mask out all aod tracks that pass the selections for AODt racks\r
@@ -951,6 +965,11 @@ void AliAnalysisTaskESDfilter::ConvertTPCOnlyTracks(const AliESDEvent& esd)
       // we only reset the track select ionfo, no deletion...\r
       tr->SetFilterMap(map&~fTPCOnlyFilterMask);\r
     }\r
+    if(map&fHybridFilterMaskITSTPC){\r
+      // this is one part of the hybrid tracks\r
+      // the others not passing the selection will be TPC only selected below\r
+      tr->SetIsHybridITSTPC(kTRUE);\r
+    }\r
   }\r
   // Loop over the ESD trcks and pick out the tracks passing TPC only cuts\r
   \r
@@ -976,11 +995,30 @@ void AliAnalysisTaskESDfilter::ConvertTPCOnlyTracks(const AliESDEvent& esd)
     AliESDtrack* esdTrack = esd.GetTrack(nTrack); //carefull do not modify it othwise  need to work with a copy \r
     \r
     UInt_t selectInfo = 0;\r
+    Bool_t isHybridITSTPC = false;\r
+    Bool_t isHybridTPC = false;\r
     //\r
     // Track selection\r
     if (fTrackFilter) {\r
       selectInfo = fTrackFilter->IsSelected(esdTrack);\r
     }\r
+\r
+    if(!(selectInfo&fHybridFilterMaskITSTPC)){\r
+      // not already selected tracks, use second part of hybrid tracks\r
+      isHybridITSTPC = true;\r
+      // too save space one could only store these...\r
+    }\r
+\r
+    if(selectInfo&fHybridFilterMaskTPC0){\r
+      isHybridTPC = true;\r
+    }\r
+    else if (!(selectInfo&fHybridFilterMaskTPC1)){\r
+      // select all that have not been chosen by the loose \r
+      // cuts\r
+      isHybridTPC = true;\r
+    }\r
+\r
+\r
     selectInfo &= fTPCOnlyFilterMask;\r
     if (!selectInfo)continue;\r
     \r
@@ -1030,6 +1068,8 @@ void AliAnalysisTaskESDfilter::ConvertTPCOnlyTracks(const AliESDEvent& esd)
                                                             vtx->UsesTrack(track->GetID()),\r
                                                             AliAODTrack::kPrimary, \r
                                                             selectInfo);\r
+    aodTrack->SetIsHybridITSTPC(isHybridITSTPC);    \r
+    aodTrack->SetIsHybridTPC(isHybridTPC);\r
     aodTrack->SetTPCClusterMap(track->GetTPCClusterMap());\r
     aodTrack->SetTPCSharedMap (track->GetTPCSharedMap());\r
     Float_t ndf = track->GetTPCNcls()+1 - 5 ;\r
index bdd6f44..2965911 100644 (file)
@@ -39,6 +39,9 @@ class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
     // Setters
     virtual void SetTrackFilter   (AliAnalysisFilter*   trackF) {fTrackFilter    =   trackF;}
     virtual void SetTPCOnlyFilterMask (UInt_t filterMask)       {fTPCOnlyFilterMask    =  filterMask;}
+    virtual void SetHybridFilterMaskITSTPC(UInt_t filterMask)         {fHybridFilterMaskITSTPC    =  filterMask;}
+    virtual void SetHybridFilterMasksTPC(UInt_t filterMask0,UInt_t filterMask1)         {fHybridFilterMaskTPC0    =  filterMask0;
+fHybridFilterMaskTPC1   =  filterMask1;}
     virtual void SetKinkFilter    (AliAnalysisFilter*    KinkF) {fKinkFilter     =    KinkF;}
     virtual void SetV0Filter      (AliAnalysisFilter*      V0F) {fV0Filter       =      V0F;}
     virtual void SetCascadeFilter (AliAnalysisFilter* CascadeF) {fCascadeFilter  = CascadeF;}
@@ -113,6 +116,10 @@ private:
   Bool_t fOldESDformat; // is the ESD in old format ?
   AliAODVertex* fPrimaryVertex; // pointer to primary vertex of the event
   UInt_t fTPCOnlyFilterMask; //  Filter Mask used to select and store refitted TPC only tracks
+  UInt_t fHybridFilterMaskITSTPC; //  Filter Mask used to select and store refitted TPC only tracks which have not passed ITS cuts
+  UInt_t fHybridFilterMaskTPC0; //  Filter Mask flag refitted TPC only tracks with tight ITScuts
+  UInt_t fHybridFilterMaskTPC1; //  Filter Mask flag refitted TPC only tracks with lose ITScuts
+
   Bool_t fIsVZEROEnabled; // whether or not to fill the vzero branch (true by default)
   Bool_t fAreCascadesEnabled; // whether or not to fill the cascades branch (true by default)
   Bool_t fAreV0sEnabled; // whether or not to fill the v0 branch (true by default)
@@ -128,7 +135,7 @@ private:
   Int_t fTimeZeroType;  //  time zero type 
   AliESDtrackCuts* fTPCaloneTrackCuts; // TPC stand-alone track cuts
   
-  ClassDef(AliAnalysisTaskESDfilter, 9); // Analysis task for standard ESD filtering
+  ClassDef(AliAnalysisTaskESDfilter, 10); // Analysis task for standard ESD filtering
 };
  
 #endif