Changes for #25142: Commit and porting to Release of the new ESD->AOD filter
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 13:02:35 +0000 (13:02 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jan 2012 13:02:35 +0000 (13:02 +0000)
ANALYSIS/AliAnalysisTaskESDfilter.cxx
ANALYSIS/AliAnalysisTaskESDfilter.h

index 4cd7490..55983b6 100644 (file)
@@ -51,6 +51,8 @@
 #include "AliCodeTimer.h"\r
 #include "AliESDtrackCuts.h"\r
 #include "AliESDpid.h"\r
+#include "AliV0vertexer.h"\r
+#include "AliCascadeVertexer.h"\r
 #include "Riostream.h"\r
 \r
 ClassImp(AliAnalysisTaskESDfilter)\r
@@ -90,6 +92,7 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter():
     fIsVZEROEnabled(kTRUE),\r
     fIsTZEROEnabled(kTRUE),\r
     fIsZDCEnabled(kTRUE),\r
+    fIsV0CascadeRecoEnabled(kFALSE),\r
     fAreCascadesEnabled(kTRUE),\r
     fAreV0sEnabled(kTRUE),\r
     fAreKinksEnabled(kTRUE),\r
@@ -143,6 +146,7 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fIsVZEROEnabled(kTRUE),\r
     fIsTZEROEnabled(kTRUE),\r
     fIsZDCEnabled(kTRUE),\r
+    fIsV0CascadeRecoEnabled(kFALSE),\r
     fAreCascadesEnabled(kTRUE),\r
     fAreV0sEnabled(kTRUE),\r
     fAreKinksEnabled(kTRUE),\r
@@ -160,6 +164,26 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fTPCaloneTrackCuts(0)\r
 {\r
   // Constructor\r
+\r
+    fV0Cuts[0] =  33.   ;   // max allowed chi2\r
+    fV0Cuts[1] =   0.1  ;   // min allowed impact parameter for the 1st daughter\r
+    fV0Cuts[2] =   0.1  ;   // min allowed impact parameter for the 2nd daughter\r
+    fV0Cuts[3] =   1.   ;   // max allowed DCA between the daughter tracks\r
+    fV0Cuts[4] =    .998;   // min allowed cosine of V0's pointing angle\r
+    fV0Cuts[5] =   0.9  ;   // min radius of the fiducial volume\r
+    fV0Cuts[6] = 100.   ;   // max radius of the fiducial volume\r
+\r
+    fCascadeCuts[0] =  33.   ; // max allowed chi2 (same as PDC07)\r
+    fCascadeCuts[1] =   0.05 ; // min allowed V0 impact parameter\r
+    fCascadeCuts[2] =   0.008; // "window" around the Lambda mass\r
+    fCascadeCuts[3] =   0.03 ; // min allowed bachelor's impact parameter\r
+    fCascadeCuts[4] =   0.3  ; // max allowed DCA between the V0 and the bachelor\r
+    fCascadeCuts[5] =   0.999; // min allowed cosine of the cascade pointing angle\r
+    fCascadeCuts[6] =   0.9  ; // min radius of the fiducial volume\r
+    fCascadeCuts[7] = 100.   ; // max radius of the fiducial volume\r
+\r
+\r
+\r
 }\r
 AliAnalysisTaskESDfilter::~AliAnalysisTaskESDfilter(){\r
     if(fIsPidOwner) delete fESDpid;\r
@@ -344,6 +368,7 @@ AliAODHeader* AliAnalysisTaskESDfilter::ConvertHeader(const AliESDEvent& esd)
 //______________________________________________________________________________\r
 void AliAnalysisTaskESDfilter::ConvertCascades(const AliESDEvent& esd) \r
 {\r
+\r
   // Convert the cascades part of the ESD.\r
   // Return the number of cascades\r
  \r
@@ -1890,7 +1915,24 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD()
   AliCodeTimerAuto("",0);\r
   \r
   fOldESDformat = ( esd->GetAliESDOld() != 0x0 );\r
-  \r
\r
+      // Reconstruct cascades and V0 here\r
+  if (fIsV0CascadeRecoEnabled) {\r
+    esd->ResetCascades();\r
+    esd->ResetV0s();\r
+\r
+    AliV0vertexer lV0vtxer;\r
+    AliCascadeVertexer lCascVtxer;\r
+\r
+    lV0vtxer.SetCuts(fV0Cuts);\r
+    lCascVtxer.SetCuts(fCascadeCuts);\r
+\r
+\r
+    lV0vtxer.Tracks2V0vertices(esd);\r
+    lCascVtxer.V0sTracks2CascadeVertices(esd);\r
+  }\r
+\r
\r
   fNumberOfTracks = 0;\r
   fNumberOfPositiveTracks = 0;\r
   fNumberOfV0s = 0;\r
@@ -2205,3 +2247,6 @@ void  AliAnalysisTaskESDfilter::PrintMCInfo(AliStack *pStack,Int_t label){
   }\r
   Printf("########################");\r
 }\r
+\r
+//______________________________________________________\r
+\r
index 1e0588d..1319257 100644 (file)
@@ -59,6 +59,15 @@ class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
     virtual void SetAODPID(AliESDtrack *esdtrack, AliAODTrack *aodtrack, AliAODPid *detpid);
     void SetDetectorRawSignals(AliAODPid *aodpid, AliESDtrack *track);
 
+    void SetV0Cuts(const Double_t cuts[7]) {for (Int_t icut = 0; icut<7; icut++) fV0Cuts[icut] = cuts[icut];}
+
+    void SetCascadeCuts(const Double_t cuts[8]) {for (Int_t icut = 0; icut<8; icut++) fCascadeCuts[icut] = cuts[icut];} 
+
+    void GetV0Cuts(Double_t cuts[7]) const {for (Int_t icut = 0; icut<7; icut++) cuts[icut] = fV0Cuts[icut];}
+
+    void GetCascadeCuts(Double_t cuts[8]) const {for (Int_t icut = 0; icut<8; icut++) cuts[icut] = fCascadeCuts[icut];}
+
+
   void PrintTask(Option_t *option="all", Int_t indent=0) const;
   
   void DisableVZERO() { fIsVZEROEnabled = kFALSE; }
@@ -74,6 +83,8 @@ class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
   void DisableCaloTrigger(TString calo = "PHOS") { if (calo.Contains("EMCAL")) fAreEMCALTriggerEnabled = kFALSE; else fArePHOSTriggerEnabled = kFALSE; }
   void DisableTracklets() { fAreTrackletsEnabled = kFALSE; }
 
+  void EnableV0CascadeVerticesReco() { fIsV0CascadeRecoEnabled = kTRUE; }
+
   virtual void SetTimeZeroType(AliESDpid::EStartTimeType_t tofTimeZeroType) {fTimeZeroType = tofTimeZeroType;}
   
 private:
@@ -99,7 +110,7 @@ private:
   void ConvertVZERO(const AliESDEvent& esd);
   void ConvertTZERO(const AliESDEvent& esd);
   void ConvertZDC(const AliESDEvent& esd);
-  
   TClonesArray& Tracks();
   TClonesArray& V0s();
   TClonesArray& Vertices();
@@ -140,6 +151,7 @@ private:
   Bool_t fIsVZEROEnabled; // whether or not to fill the vzero branch (true by default)
   Bool_t fIsTZEROEnabled; // whether or not to fill the tzero branch (true by default)
   Bool_t fIsZDCEnabled; // whether or not to fill the zdc branch (true by default)
+  Bool_t fIsV0CascadeRecoEnabled; // whether or not to reconstruct again V0s and cascades (false 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)
   Bool_t fAreKinksEnabled; // whether or not to fill the kinks (true by default)
@@ -155,8 +167,11 @@ private:
   Bool_t fIsPidOwner; // whether we own fESDpid
   Int_t fTimeZeroType;  //  time zero type 
   AliESDtrackCuts* fTPCaloneTrackCuts; // TPC stand-alone track cuts
+  Double_t        fV0Cuts[7];       // Array to store the values for the different reco selections V0 related
+  Double_t        fCascadeCuts[8];  // Array to store the values for the different reco selections cascades related
+  
   
-  ClassDef(AliAnalysisTaskESDfilter, 12); // Analysis task for standard ESD filtering
+  ClassDef(AliAnalysisTaskESDfilter, 13); // Analysis task for standard ESD filtering
 };
+
 #endif