implementation of the shared daughter cut in AliFemto V0 analysis
authormaszyman <maszyman@cern.ch>
Tue, 4 Nov 2014 11:07:42 +0000 (12:07 +0100)
committermaszyman <maszyman@cern.ch>
Tue, 4 Nov 2014 11:08:36 +0000 (12:08 +0100)
PWGCF/CMakelibPWGCFfemtoscopy.pkg
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoSimpleAnalysis.cxx
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoSimpleAnalysis.h
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.cxx [new file with mode: 0644]
PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.h [new file with mode: 0644]
PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctnKK.cxx
PWGCF/FEMTOSCOPY/macros/Train/ProtonLambdaFemto/Central/ConfigFemtoAnalysis.C
PWGCF/FEMTOSCOPY/macros/Train/ProtonLambdaFemto/Monitors/ConfigFemtoAnalysis.C
PWGCF/FEMTOSCOPY/macros/Train/ProtonLambdaFemto/SemiCentral/ConfigFemtoAnalysis.C
PWGCF/PWGCFfemtoscopyLinkDef.h

index b59994d..bb2b548 100644 (file)
 # SHLIBS - Shared Libraries and objects for linking (Executables only)   #
 #------------------------------------------------------------------------#
 
-set ( SRCS  
-    FEMTOSCOPY/AliFemto/AliFemtoSimpleAnalysis.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoLikeSignAnalysis.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoVertexAnalysis.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoVertexMultAnalysis.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoAnalysisAzimuthal.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoAnalysisReactionPlane.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoBPLCMS3DCorrFctn.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn3DLCMSSym.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoQinvCorrFctn.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoBasicEventCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventCutEstimators.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoBasicTrackCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoDummyPairCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCoulomb.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorHandler.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEvent.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoKink.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoManager.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoPair.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoParticle.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoPicoEvent.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollectionVectorHideAway.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoV0.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoXi.cxx 
-    FEMTOSCOPY/AliFemto/AliFmHelix.cxx 
-    FEMTOSCOPY/AliFemto/AliFmPhysicalHelix.cxx 
-    FEMTOSCOPY/AliFemto/TpcLocalTransform.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReader.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderStandard.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESD.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChain.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChainKine.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelHiddenInfo.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelGlobalHiddenInfo.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelGausLCMSFreezeOutGenerator.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGenerator.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGeneratorBasic.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelManager.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelCorrFctn.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelFreezeOutGenerator.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGeneratorLednicky.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticleYPt.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticleVertPos.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticlePID.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventMult.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventVertex.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoKTPairCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCorrFctnNonIdDR.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn3DSpherical.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderAOD.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoEventReaderAODChain.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoAODTrackCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitor.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn.cxx 
-    FEMTOSCOPY/AliFemto/AliAnalysisTaskFemto.cxx 
+set ( SRCS
+    FEMTOSCOPY/AliFemto/AliFemtoSimpleAnalysis.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoLikeSignAnalysis.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoVertexAnalysis.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoVertexMultAnalysis.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoAnalysisAzimuthal.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoAnalysisReactionPlane.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoBPLCMS3DCorrFctn.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn3DLCMSSym.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoQinvCorrFctn.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoBasicEventCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventCutEstimators.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoBasicTrackCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoDummyPairCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCoulomb.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorHandler.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEvent.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoKink.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoManager.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoPair.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoParticle.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoPicoEvent.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollectionVectorHideAway.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoTrack.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoV0.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoXi.cxx
+    FEMTOSCOPY/AliFemto/AliFmHelix.cxx
+    FEMTOSCOPY/AliFemto/AliFmPhysicalHelix.cxx
+    FEMTOSCOPY/AliFemto/TpcLocalTransform.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReader.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderStandard.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESD.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChain.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderESDChainKine.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelHiddenInfo.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelGlobalHiddenInfo.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelGausLCMSFreezeOutGenerator.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGenerator.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGeneratorBasic.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelManager.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelCorrFctn.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelFreezeOutGenerator.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoModelWeightGeneratorLednicky.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticleYPt.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticleVertPos.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorParticlePID.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventMult.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventVertex.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoKTPairCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCorrFctnNonIdDR.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn3DSpherical.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderAOD.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoEventReaderAODChain.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoAODTrackCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitor.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCorrFctn.cxx
+    FEMTOSCOPY/AliFemto/AliAnalysisTaskFemto.cxx
     FEMTOSCOPY/AliFemto/AliTwoTrackRes.cxx
     FEMTOSCOPY/AliFemto/AliFemtoMCTrackCut.cxx
     FEMTOSCOPY/AliFemto/AliFemtoEventReaderKinematicsChain.cxx
     FEMTOSCOPY/AliFemto/AliFemtoEventReaderKinematicsChainESD.cxx
-    FEMTOSCOPY/AliFemto/AliFemtoV0PairCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoV0TrackCut.cxx 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorV0.cxx 
+    FEMTOSCOPY/AliFemto/AliFemtoV0PairCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoV0TrackCut.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorV0.cxx
     FEMTOSCOPY/AliFemto/AliFemtoV0TrackPairCut.cxx
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorCollections.cxx 
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorCollections.cxx
+    FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.cxx
     )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
 
-set ( HDRS ${HDRS}  
-    FEMTOSCOPY/AliFemto/AliFmThreeVector.h 
-    FEMTOSCOPY/AliFemto/AliFmThreeVectorF.h 
-    FEMTOSCOPY/AliFemto/AliFmThreeVectorD.h 
-    FEMTOSCOPY/AliFemto/AliFmPhysicalHelixD.h 
-    FEMTOSCOPY/AliFemto/AliFmHelixD.h 
-    FEMTOSCOPY/AliFemto/AliFmLorentzVectorD.h 
-    FEMTOSCOPY/AliFemto/AliFemtoV0Cut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoKinkCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoXiCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoAnalysisCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoAnalysis.h 
-    FEMTOSCOPY/AliFemto/AliFemtoCorrFctnCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoEnumeration.h 
-    FEMTOSCOPY/AliFemto/AliFemtoHelix.h 
-    FEMTOSCOPY/AliFemto/AliFemtoHiddenInfo.h 
-    FEMTOSCOPY/AliFemto/AliFemtoLikeSignCorrFctn.h 
-    FEMTOSCOPY/AliFemto/AliFemtoLorentzVector.h 
-    FEMTOSCOPY/AliFemto/AliFemtoString.h 
-    FEMTOSCOPY/AliFemto/AliFemtoThreeVectorD.h 
-    FEMTOSCOPY/AliFemto/AliFemtoThreeVector.h 
-    FEMTOSCOPY/AliFemto/AliFemtoTypes.h 
-    FEMTOSCOPY/AliFemto/AliFemtoVector.h 
-    FEMTOSCOPY/AliFemto/AliFmLorentzVector.h 
-    FEMTOSCOPY/AliFemto/phys_constants.h 
-    FEMTOSCOPY/AliFemto/PhysicalConstants.h 
-    FEMTOSCOPY/AliFemto/SystemOfUnits.h 
-    FEMTOSCOPY/AliFemto/AliFemtoPairCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoEventCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoParticleCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoTrackCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoV0Collection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoXiCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoKinkCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoParticleCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorCollection.h 
-    FEMTOSCOPY/AliFemto/AliFemtoTrackCut.h 
-    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollectionVector.h 
-    FEMTOSCOPY/AliFemto/AliFemtoEventWriter.h 
-    FEMTOSCOPY/AliFemto/AliFemtoEventWriterCollection.h 
+set ( HDRS ${HDRS}
+    FEMTOSCOPY/AliFemto/AliFmThreeVector.h
+    FEMTOSCOPY/AliFemto/AliFmThreeVectorF.h
+    FEMTOSCOPY/AliFemto/AliFmThreeVectorD.h
+    FEMTOSCOPY/AliFemto/AliFmPhysicalHelixD.h
+    FEMTOSCOPY/AliFemto/AliFmHelixD.h
+    FEMTOSCOPY/AliFemto/AliFmLorentzVectorD.h
+    FEMTOSCOPY/AliFemto/AliFemtoV0Cut.h
+    FEMTOSCOPY/AliFemto/AliFemtoKinkCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoXiCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoAnalysisCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoAnalysis.h
+    FEMTOSCOPY/AliFemto/AliFemtoCorrFctnCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoEnumeration.h
+    FEMTOSCOPY/AliFemto/AliFemtoHelix.h
+    FEMTOSCOPY/AliFemto/AliFemtoHiddenInfo.h
+    FEMTOSCOPY/AliFemto/AliFemtoLikeSignCorrFctn.h
+    FEMTOSCOPY/AliFemto/AliFemtoLorentzVector.h
+    FEMTOSCOPY/AliFemto/AliFemtoString.h
+    FEMTOSCOPY/AliFemto/AliFemtoThreeVectorD.h
+    FEMTOSCOPY/AliFemto/AliFemtoThreeVector.h
+    FEMTOSCOPY/AliFemto/AliFemtoTypes.h
+    FEMTOSCOPY/AliFemto/AliFemtoVector.h
+    FEMTOSCOPY/AliFemto/AliFmLorentzVector.h
+    FEMTOSCOPY/AliFemto/phys_constants.h
+    FEMTOSCOPY/AliFemto/PhysicalConstants.h
+    FEMTOSCOPY/AliFemto/SystemOfUnits.h
+    FEMTOSCOPY/AliFemto/AliFemtoPairCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoEventCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoParticleCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoTrackCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoV0Collection.h
+    FEMTOSCOPY/AliFemto/AliFemtoXiCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoKinkCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoParticleCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoCutMonitorCollection.h
+    FEMTOSCOPY/AliFemto/AliFemtoTrackCut.h
+    FEMTOSCOPY/AliFemto/AliFemtoPicoEventCollectionVector.h
+    FEMTOSCOPY/AliFemto/AliFemtoEventWriter.h
+    FEMTOSCOPY/AliFemto/AliFemtoEventWriterCollection.h
     FEMTOSCOPY/AliFemto/AliFemtoMCTrackCut.h
     FEMTOSCOPY/AliFemto/AliFemtoEventReaderKinematicsChain.h
     )
@@ -150,7 +151,7 @@ set ( EXPORT )
 set ( EINCLUDE  PWGCF/FEMTOSCOPY/AliFemto  STEER/AOD STEER/ESD STEER/STEERBase ANALYSIS)
 
 install (DIRECTORY FEMTOSCOPY/macros
-         DESTINATION PWGCF/FEMTOSCOPY 
+         DESTINATION PWGCF/FEMTOSCOPY
          PATTERN .svn EXCLUDE)
 
 #
index f945729..9024d95 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////
 //                                                                       //
-// AliFemtoSimpleAnalysis - the most basic analysis there is. All other        //
+// AliFemtoSimpleAnalysis - the most basic analysis there is. All other  //
 // inherit from this one. Provides basic functionality for the analysis. //
 // To properly set up the analysis the following steps should be taken:  //
 //                                                                       //
@@ -26,6 +26,7 @@
 // called.                                                               //
 //                                                                       //
 ///////////////////////////////////////////////////////////////////////////
+
 #include "AliFemtoSimpleAnalysis.h"
 #include "AliFemtoTrackCut.h"
 #include "AliFemtoV0Cut.h"
@@ -35,7 +36,7 @@
 
 // blah blah
 
-#ifdef __ROOT__ 
+#ifdef __ROOT__
 ClassImp(AliFemtoSimpleAnalysis)
 #endif
 
@@ -48,48 +49,66 @@ AliFemtoCorrFctn*    copyTheCorrFctn(AliFemtoCorrFctn*);
 //  it is called from AliFemtoSimpleAnalysis::ProcessEvent()
 void FillHbtParticleCollection(AliFemtoParticleCut*         partCut,
                               AliFemtoEvent*               hbtEvent,
-                              AliFemtoParticleCollection*  partCollection)
+                              AliFemtoParticleCollection*  partCollection,
+                              bool performSharedDaughterCut=kFALSE)
 {
   // Fill particle collections from the event
   // by the particles that pass all the cuts
   switch (partCut->Type()) {
   case hbtTrack:       // cut is cutting on Tracks
-    {
-      AliFemtoTrackCut* pCut = (AliFemtoTrackCut*) partCut;
-      AliFemtoTrack* pParticle;
-      AliFemtoTrackIterator pIter;
-      AliFemtoTrackIterator startLoop = hbtEvent->TrackCollection()->begin();
-      AliFemtoTrackIterator endLoop   = hbtEvent->TrackCollection()->end();
-      for (pIter=startLoop;pIter!=endLoop;pIter++){
-       pParticle = *pIter;
-       bool tmpPassParticle = pCut->Pass(pParticle);
-       pCut->FillCutMonitor(pParticle, tmpPassParticle);
-       if (tmpPassParticle){   
-         AliFemtoParticle* particle = new AliFemtoParticle(pParticle,pCut->Mass());
-         partCollection->push_back(particle);
-       }
+  {
+    AliFemtoTrackCut* pCut = (AliFemtoTrackCut*) partCut;
+    AliFemtoTrack* pParticle;
+    AliFemtoTrackIterator pIter;
+    AliFemtoTrackIterator startLoop = hbtEvent->TrackCollection()->begin();
+    AliFemtoTrackIterator endLoop   = hbtEvent->TrackCollection()->end();
+    for (pIter=startLoop;pIter!=endLoop;pIter++){
+      pParticle = *pIter;
+      bool tmpPassParticle = pCut->Pass(pParticle);
+      pCut->FillCutMonitor(pParticle, tmpPassParticle);
+      if (tmpPassParticle){
+        AliFemtoParticle* particle = new AliFemtoParticle(pParticle,pCut->Mass());
+        partCollection->push_back(particle);
       }
-      break;
     }
+    break;
+  }
   case hbtV0:          // cut is cutting on V0s
     {
       AliFemtoV0Cut* pCut = (AliFemtoV0Cut*) partCut;
       AliFemtoV0* pParticle;
       AliFemtoV0Iterator pIter;
-      AliFemtoV0Iterator startLoop = hbtEvent->V0Collection()->begin();
-      AliFemtoV0Iterator endLoop   = hbtEvent->V0Collection()->end();
-      // this following "for" loop is identical to the one above, but because of scoping, I can's see how to avoid repitition...
-      for (pIter=startLoop;pIter!=endLoop;pIter++){
-       pParticle = *pIter; 
-       bool tmpPassV0 = pCut->Pass(pParticle);
-       pCut->FillCutMonitor(pParticle,tmpPassV0);
-       if (tmpPassV0){
-         AliFemtoParticle* particle = new AliFemtoParticle(pParticle,partCut->Mass());
-         partCollection->push_back(particle);
-       }
+
+      if(performSharedDaughterCut) {
+        AliFemtoV0Collection V0CorrectedCollection;
+        AliFemtoV0SharedDaughterCut sharedDaughterCut;
+        V0CorrectedCollection = sharedDaughterCut.AliFemtoV0SharedDaughterCutCollection(hbtEvent->V0Collection(), pCut);
+
+        AliFemtoV0Iterator startLoop = V0CorrectedCollection.begin();
+        AliFemtoV0Iterator endLoop   = V0CorrectedCollection.end();
+
+        for (pIter=startLoop;pIter!=endLoop;pIter++){
+          pParticle = *pIter;
+          AliFemtoParticle* particle = new AliFemtoParticle(pParticle,partCut->Mass());
+          partCollection->push_back(particle);
+        }
       }
+      else { //previous, untouched loop:
+        AliFemtoV0Iterator startLoop = hbtEvent->V0Collection()->begin();
+        AliFemtoV0Iterator endLoop   = hbtEvent->V0Collection()->end();
+        for (pIter=startLoop;pIter!=endLoop;pIter++){
+          pParticle = *pIter;
+          bool tmpPassV0 = pCut->Pass(pParticle);
+          pCut->FillCutMonitor(pParticle,tmpPassV0);
+          if(tmpPassV0) {
+            AliFemtoParticle* particle = new AliFemtoParticle(pParticle,partCut->Mass());
+            partCollection->push_back(particle);
+          }
+        }
+      }
+
       pCut->FillCutMonitor(hbtEvent,partCollection);// Gael 19/06/02
-      
+
       break;
     }
   case hbtKink:          // cut is cutting on Kinks  -- mal 25May2001
@@ -101,7 +120,7 @@ void FillHbtParticleCollection(AliFemtoParticleCut*         partCut,
       AliFemtoKinkIterator endLoop   = hbtEvent->KinkCollection()->end();
       // this following "for" loop is identical to the one above, but because of scoping, I can's see how to avoid repitition...
       for (pIter=startLoop;pIter!=endLoop;pIter++){
-       pParticle = *pIter; 
+       pParticle = *pIter;
        bool tmpPass = pCut->Pass(pParticle);
        pCut->FillCutMonitor(pParticle,tmpPass);
        if (tmpPass){
@@ -117,16 +136,16 @@ void FillHbtParticleCollection(AliFemtoParticleCut*         partCut,
 }
 //____________________________
 AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis() :
-  fPicoEventCollectionVectorHideAway(0), 
-  fPairCut(0),            
-  fCorrFctnCollection(0), 
-  fEventCut(0),           
-  fFirstParticleCut(0),   
-  fSecondParticleCut(0),  
-  fMixingBuffer(0),       
-  fPicoEvent(0),          
-  fNumEventsToMix(0),                     
-  fNeventsProcessed(0),                   
+  fPicoEventCollectionVectorHideAway(0),
+  fPairCut(0),
+  fCorrFctnCollection(0),
+  fEventCut(0),
+  fFirstParticleCut(0),
+  fSecondParticleCut(0),
+  fMixingBuffer(0),
+  fPicoEvent(0),
+  fNumEventsToMix(0),
+  fNeventsProcessed(0),
   fMinSizePartCollection(0),
   fVerbose(kTRUE)
 {
@@ -137,18 +156,18 @@ AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis() :
 }
 //____________________________
 
-AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis(const AliFemtoSimpleAnalysis& a) : 
+AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis(const AliFemtoSimpleAnalysis& a) :
   AliFemtoAnalysis(),
-  fPicoEventCollectionVectorHideAway(0), 
-  fPairCut(0),            
-  fCorrFctnCollection(0), 
-  fEventCut(0),           
-  fFirstParticleCut(0),   
-  fSecondParticleCut(0),  
-  fMixingBuffer(0),       
-  fPicoEvent(0),          
-  fNumEventsToMix(0),                     
-  fNeventsProcessed(0),                   
+  fPicoEventCollectionVectorHideAway(0),
+  fPairCut(0),
+  fCorrFctnCollection(0),
+  fEventCut(0),
+  fFirstParticleCut(0),
+  fSecondParticleCut(0),
+  fMixingBuffer(0),
+  fPicoEvent(0),
+  fNumEventsToMix(0),
+  fNeventsProcessed(0),
   fMinSizePartCollection(0),
   fVerbose(kTRUE)
 {
@@ -162,13 +181,13 @@ AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis(const AliFemtoSimpleAnalysis& a)
   // find the right first particle cut
   fFirstParticleCut = a.fFirstParticleCut->Clone();
   // find the right second particle cut
-  if (a.fFirstParticleCut==a.fSecondParticleCut) 
+  if (a.fFirstParticleCut==a.fSecondParticleCut)
     SetSecondParticleCut(fFirstParticleCut); // identical particle hbt
   else
   fSecondParticleCut = a.fSecondParticleCut->Clone();
 
   fPairCut = a.fPairCut->Clone();
-  
+
   if ( fEventCut ) {
       SetEventCut(fEventCut); // this will set the myAnalysis pointer inside the cut
       cout << " AliFemtoSimpleAnalysis::AliFemtoSimpleAnalysis(const AliFemtoSimpleAnalysis& a) - event cut set " << endl;
@@ -225,7 +244,7 @@ AliFemtoSimpleAnalysis::~AliFemtoSimpleAnalysis(){
   }
 }
 //______________________
-AliFemtoSimpleAnalysis& AliFemtoSimpleAnalysis::operator=(const AliFemtoSimpleAnalysis& aAna) 
+AliFemtoSimpleAnalysis& AliFemtoSimpleAnalysis::operator=(const AliFemtoSimpleAnalysis& aAna)
 {
   // Assignment operator
   if (this == &aAna)
@@ -244,14 +263,14 @@ AliFemtoSimpleAnalysis& AliFemtoSimpleAnalysis::operator=(const AliFemtoSimpleAn
   fFirstParticleCut = aAna.fFirstParticleCut->Clone();
   // find the right second particle cut
   if (fSecondParticleCut) delete fSecondParticleCut;
-  if (aAna.fFirstParticleCut==aAna.fSecondParticleCut) 
+  if (aAna.fFirstParticleCut==aAna.fSecondParticleCut)
     SetSecondParticleCut(fFirstParticleCut); // identical particle hbt
   else
     fSecondParticleCut = aAna.fSecondParticleCut->Clone();
 
   if (fPairCut) delete fPairCut;
   fPairCut = aAna.fPairCut->Clone();
-  
+
   if ( fEventCut ) {
     SetEventCut(fEventCut); // this will set the myAnalysis pointer inside the cut
   }
@@ -260,7 +279,7 @@ AliFemtoSimpleAnalysis& AliFemtoSimpleAnalysis::operator=(const AliFemtoSimpleAn
   }
   if ( fSecondParticleCut ) {
     SetSecondParticleCut(fSecondParticleCut); // this will set the myAnalysis pointer inside the cut
-  }  
+  }
   if ( fPairCut ) {
     SetPairCut(fPairCut); // this will set the myAnalysis pointer inside the cut
   }
@@ -280,7 +299,7 @@ AliFemtoSimpleAnalysis& AliFemtoSimpleAnalysis::operator=(const AliFemtoSimpleAn
   return *this;
 }
 //______________________
-AliFemtoCorrFctn* AliFemtoSimpleAnalysis::CorrFctn(int n){  
+AliFemtoCorrFctn* AliFemtoSimpleAnalysis::CorrFctn(int n){
   // return pointer to n-th correlation function
   if ( n<0 || n > (int)fCorrFctnCollection->size() )
     return NULL;
@@ -323,11 +342,11 @@ void AliFemtoSimpleAnalysis::ProcessEvent(const AliFemtoEvent* hbtEvent) {
 
   fPicoEvent=0; // we will get a new pico event, if not prevent corr. fctn to access old pico event
   AddEventProcessed();
-  // startup for EbyE 
-  EventBegin(hbtEvent);  
+  // startup for EbyE
+  EventBegin(hbtEvent);
   // event cut and event cut monitor
   bool tmpPassEvent = fEventCut->Pass(hbtEvent);
-  if (!tmpPassEvent) 
+  if (!tmpPassEvent)
     fEventCut->FillCutMonitor(hbtEvent, tmpPassEvent);
   if (tmpPassEvent) {
     //  cout << "AliFemtoSimpleAnalysis::ProcessEvent() - Event has passed cut - build picoEvent from " <<
@@ -336,27 +355,27 @@ void AliFemtoSimpleAnalysis::ProcessEvent(const AliFemtoEvent* hbtEvent) {
     // OK, analysis likes the event-- build a pico event from it, using tracks the analysis likes...
     fPicoEvent = new AliFemtoPicoEvent; // this is what we will make pairs from and put in Mixing Buffer
     // no memory leak. we will delete picoevents when they come out of the mixing buffer
-    FillHbtParticleCollection(fFirstParticleCut,(AliFemtoEvent*)hbtEvent,fPicoEvent->FirstParticleCollection());
+    FillHbtParticleCollection(fFirstParticleCut,(AliFemtoEvent*)hbtEvent,fPicoEvent->FirstParticleCollection(), fPerformSharedDaughterCut);
     if ( !(AnalyzeIdenticalParticles()) )
-      FillHbtParticleCollection(fSecondParticleCut,(AliFemtoEvent*)hbtEvent,fPicoEvent->SecondParticleCollection());
+      FillHbtParticleCollection(fSecondParticleCut,(AliFemtoEvent*)hbtEvent,fPicoEvent->SecondParticleCollection(),
+                               fPerformSharedDaughterCut);
     //cout <<"AliFemtoSimpleAnalysis::ProcessEvent - #particles in First, Second Collections: " <<
 //       fPicoEvent->FirstParticleCollection()->size() << " " <<
 //       fPicoEvent->SecondParticleCollection()->size() << endl;
-    
+
     if (fVerbose)
     cout << "#particles in Collection 1, 2: " <<
        fPicoEvent->FirstParticleCollection()->size() << " " <<
        fPicoEvent->SecondParticleCollection()->size() << endl;
-
     fEventCut->FillCutMonitor(fPicoEvent->FirstParticleCollection(),fPicoEvent->SecondParticleCollection()); //MJ!
-    
-    
+
+
     // mal - implement a switch which allows only using events with ParticleCollections containing a minimum
     // number of entries (jun2002)
     if ((fPicoEvent->FirstParticleCollection()->size() >= fMinSizePartCollection )
        && ( AnalyzeIdenticalParticles() || (fPicoEvent->SecondParticleCollection()->size() >= fMinSizePartCollection ))) {
       fEventCut->FillCutMonitor(hbtEvent, tmpPassEvent);
-      
+
 
 //------------------------------------------------------------------------------
 //   Temporary comment:
@@ -423,7 +442,7 @@ void AliFemtoSimpleAnalysis::ProcessEvent(const AliFemtoEvent* hbtEvent) {
       delete fPicoEvent;
     }
   }   // if currentEvent is accepted by currentAnalysis
-  EventEnd(hbtEvent);  // cleanup for EbyE 
+  EventEnd(hbtEvent);  // cleanup for EbyE
   //cout << "AliFemtoSimpleAnalysis::ProcessEvent() - return to caller ... " << endl;
 }
 //_________________________
@@ -466,10 +485,10 @@ void AliFemtoSimpleAnalysis::MakePairs(const char* typeIn, AliFemtoParticleColle
       tPair->SetTrack2(*tPartIter2);
 
       // The following lines have to be uncommented if you want pairCutMonitors
-      // they are not in for speed reasons
-      // bool tmpPassPair = fPairCut->Pass(tPair);
-      // fPairCut->FillCutMonitor(tPair, tmpPassPair);
-      // if ( tmpPassPair )
+      // they are not in // for speed reasons
+      //bool tmpPassPair = fPairCut->Pass(tPair);
+      //fPairCut->FillCutMonitor(tPair, tmpPassPair);
+      // // if ( tmpPassPair )
 
       //---- If pair passes cut, loop over CF's and add pair to real/mixed ----//
 
@@ -557,7 +576,7 @@ TList* AliFemtoSimpleAnalysis::ListSettings()
 
   if (fSecondParticleCut != fFirstParticleCut) {
     TList *p2Cut = fSecondParticleCut->ListSettings();
-    
+
     TIter nextp2(p2Cut);
     while (TObject *obj = nextp2()) {
       TString cuts(obj->GetName());
@@ -576,14 +595,14 @@ TList* AliFemtoSimpleAnalysis::ListSettings()
   }
 
   return tListSettings;
-  
+
 }
 
 //_________________________
 TList* AliFemtoSimpleAnalysis::GetOutputList()
 {
   // Collect the list of output objects
-  // to be written 
+  // to be written
   TList *tOutputList = new TList();
 
   TList *p1Cut = fFirstParticleCut->GetOutputList();
@@ -596,7 +615,7 @@ TList* AliFemtoSimpleAnalysis::GetOutputList()
 
   if (fSecondParticleCut != fFirstParticleCut) {
     TList *p2Cut = fSecondParticleCut->GetOutputList();
-    
+
     TIter nextp2(p2Cut);
     while (TObject *obj = nextp2()) {
       tOutputList->Add(obj);
@@ -623,7 +642,7 @@ TList* AliFemtoSimpleAnalysis::GetOutputList()
   AliFemtoCorrFctnIterator iter;
   for (iter=fCorrFctnCollection->begin(); iter!=fCorrFctnCollection->end();iter++){
     TList *tListCf = (*iter)->GetOutputList();
-    
+
     TIter nextListCf(tListCf);
     while (TObject *obj = nextListCf()) {
       tOutputList->Add(obj);
@@ -632,5 +651,5 @@ TList* AliFemtoSimpleAnalysis::GetOutputList()
   }
 
   return tOutputList;
-  
+
 }
index 912306d..91ec2c0 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliFemtoPicoEventCollection.h"
 #include "AliFemtoParticleCollection.h"
 #include "AliFemtoPicoEvent.h"
+#include "AliFemtoV0SharedDaughterCut.h"
 
 class AliFemtoPicoEventCollectionVectorHideAway;
 
@@ -51,6 +52,9 @@ class AliFemtoSimpleAnalysis : public AliFemtoAnalysis {
   void SetMinSizePartCollection(unsigned int minSize);
 
   void SetVerboseMode(Bool_t aVerbose);
+  
+  void SetV0SharedDaughterCut(Bool_t aPerform);
+  bool V0SharedDaughterCut();
 
   unsigned int NumEventsToMix() const;
   void SetNumEventsToMix(const unsigned int& NumberOfEventsToMix);
@@ -97,6 +101,7 @@ class AliFemtoSimpleAnalysis : public AliFemtoAnalysis {
   unsigned int fMinSizePartCollection;               //  Don't use event if it has fewer than this many particles passing ParticleCuts default 0
 
   Bool_t fVerbose;
+  Bool_t fPerformSharedDaughterCut;
 
 #ifdef __ROOT__
   ClassDef(AliFemtoSimpleAnalysis, 0)
@@ -116,6 +121,7 @@ inline AliFemtoPicoEvent*            AliFemtoSimpleAnalysis::CurrentPicoEvent()
 inline AliFemtoPicoEventCollection*  AliFemtoSimpleAnalysis::MixingBuffer() {return fMixingBuffer;}
 
 inline bool AliFemtoSimpleAnalysis::AnalyzeIdenticalParticles() const { return (fFirstParticleCut==fSecondParticleCut); }
+inline bool AliFemtoSimpleAnalysis::V0SharedDaughterCut() { return fPerformSharedDaughterCut; }
 
 // Set's
 inline void AliFemtoSimpleAnalysis::SetPairCut(AliFemtoPairCut* x) { fPairCut = x; x->SetAnalysis((AliFemtoAnalysis*)this);}
@@ -131,5 +137,6 @@ inline int AliFemtoSimpleAnalysis::GetNeventsProcessed() const {return fNeventsP
 inline void AliFemtoSimpleAnalysis::SetMinSizePartCollection(unsigned int minSize){fMinSizePartCollection = minSize;}
 
 inline void AliFemtoSimpleAnalysis::SetVerboseMode(Bool_t aVerbose){fVerbose = aVerbose;}
+inline void AliFemtoSimpleAnalysis::SetV0SharedDaughterCut(Bool_t aPerform) { fPerformSharedDaughterCut = aPerform; }
 
 #endif
diff --git a/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.cxx b/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.cxx
new file mode 100644 (file)
index 0000000..a5e9aa0
--- /dev/null
@@ -0,0 +1,81 @@
+//////////////////////////////////////////////////////////////////////
+//                                                                  //
+// The macro allows to make all needed cuts on V0 particles and     //
+// to remove from the V0Collection particles which share            //
+// at least one of their daughters with accepted ones using lower   //
+// DCA to primary vertex of V0 as the criterion.                    //
+//                                                                  //
+// Author: Dominik Arominski                                        //
+// Email: dominik.arominski@cern.ch                                 //
+//                                                                  //
+//////////////////////////////////////////////////////////////////////
+
+#include "AliFemtoV0SharedDaughterCut.h"
+
+AliFemtoV0SharedDaughterCut::AliFemtoV0SharedDaughterCut() { }
+AliFemtoV0SharedDaughterCut::~AliFemtoV0SharedDaughterCut() { }
+
+AliFemtoV0Collection AliFemtoV0SharedDaughterCut::AliFemtoV0SharedDaughterCutCollection(AliFemtoV0Collection *V0Collection,
+                                                                                        AliFemtoV0Cut *pCut) {
+
+  Int_t collectionSize = V0Collection->size();         //determination of collection size
+  Int_t positionInCollection=0;                        //used to iterate inside the collection
+  Int_t count_pass=0;                                  //used to indicate how many V0s are accepted at the moment
+  Int_t *IdPosArray = new Int_t[collectionSize]; //used to determine if there is more than one pretendent for one daughter ID
+  Int_t *IdNegArray = new Int_t[collectionSize]; //same as above
+  Double_t *dcaToPrimVertex = new Double_t[collectionSize]; //used to discriminate between pretendents using DCA to primary vertex
+  bool acceptV0 = false;                                            //used to determine if particle should be pushed to the collection
+  AliFemtoV0Collection V0CorrectedCollection;               //collection to be returned
+
+  AliFemtoV0* pParticle;
+  AliFemtoV0Iterator iterator;
+  AliFemtoV0Iterator start = V0Collection->begin();
+  AliFemtoV0Iterator end = V0Collection->end();
+
+  for (iterator=start;iterator!=end;iterator++){
+    pParticle = *iterator;
+    bool tmpPassV0 = pCut->Pass(pParticle);
+    // it is not certain if particle which passed all the cuts will stay in the collection but if it fails - it fails for sure
+    pCut->FillCutMonitor(pParticle,tmpPassV0);
+    if(tmpPassV0) {
+      acceptV0=true;                                                //it stays true if there are no conflicts
+      IdPosArray[count_pass] = pParticle->IdPos();                  //id array of positive V0's daughters
+      IdNegArray[count_pass] = pParticle->IdNeg();                  //id array of negative V0's daughters
+      dcaToPrimVertex[count_pass] = pParticle->DcaV0ToPrimVertex(); //array of corresponding values of V0's DCA to primary vertex
+
+      for(Int_t ii=0; ii<count_pass; ii++) { //used to check if in collection are already V0s with these daughters' IDs
+        if( (IdPosArray[count_pass]==IdPosArray[ii]) || (IdNegArray[count_pass]==IdNegArray[ii]) ) {
+          //checking if any of the new V0 daughters doesn't have the same ID value as particles already in the set
+          if(dcaToPrimVertex[count_pass] < dcaToPrimVertex[ii]) { //checking if new V0 is better than the old one
+            //if true there is a need to remove worse particle from the collection
+            for(AliFemtoV0Iterator iter=V0CorrectedCollection.begin(); iter!=V0CorrectedCollection.end(); iter++ ) {
+              if(positionInCollection==ii) {
+                V0CorrectedCollection.erase(iter);                 //removing old V0
+                V0CorrectedCollection.insert(iter, pParticle);  //inserting new better V0
+                IdPosArray[ii] = IdPosArray[count_pass];           //update of positive daughter's ID
+                IdNegArray[ii] = IdNegArray[count_pass];           //update of negative daughter's ID
+                dcaToPrimVertex[ii] = dcaToPrimVertex[count_pass]; //update of V0's DCA to primary vertex
+                break;
+              }
+              positionInCollection++;
+            }
+            positionInCollection=0;
+          }
+          acceptV0=false; //conflict found - we don't need to change anything(worse DCA) or change has been already done
+          break;
+        }
+      }
+      if(acceptV0) {                                //if there are no problems with the particle it is added to the collection
+        V0CorrectedCollection.push_back(pParticle); //finally particle is added to collection
+        count_pass++;                               //particle accepted so number of particles increases
+      }
+    }
+  }
+
+
+  delete [] IdPosArray;
+  delete [] IdNegArray;
+  delete [] dcaToPrimVertex;
+
+  return V0CorrectedCollection;
+}
diff --git a/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.h b/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0SharedDaughterCut.h
new file mode 100644 (file)
index 0000000..0c9aebe
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef AliFemtoV0SharedDaughterCut_H
+#define AliFemtoV0SharedDaughterCut_H
+
+#include "AliFemtoTrackCut.h"
+#include "AliFemtoV0.h"
+#include "AliFemtoV0Cut.h"
+#include "AliFemtoV0Collection.h"
+
+class AliFemtoV0SharedDaughterCut {
+
+ public:
+  
+  AliFemtoV0SharedDaughterCut(); //default constructor, does nothing
+  virtual AliFemtoV0Collection AliFemtoV0SharedDaughterCutCollection(AliFemtoV0Collection*, AliFemtoV0Cut*);
+  virtual ~AliFemtoV0SharedDaughterCut();
+
+#ifdef __ROOT__
+  ClassDef(AliFemtoV0SharedDaughterCut, 0)
+#endif 
+
+    }; 
+#endif
index b03505b..0c10fff 100644 (file)
@@ -33,7 +33,7 @@ AliFemtoModelBPLCMSCorrFctnKK::AliFemtoModelBPLCMSCorrFctnKK(char* title, const
 {
   // set up true numerator
   char tTitNumT[101] = "Num3DTrue";
-  strncat(tTitNumT,title, 101);
+  strncat(tTitNumT,title, 100);
   fNumerator3DTrue = new TH3D(tTitNumT,title,nbins,QLo,QHi,nbins,QLo,QHi,nbins,QLo,QHi);
   // set up fake numerator
   char tTitNumF[101] = "Num3DFake";
index 11c16ae..c2b1736 100644 (file)
@@ -78,6 +78,8 @@ AliFemtoManager* ConfigFemtoAnalysis() {
   int numOfChTypes = 10;
   int numOfkTBins = 2;
 
+  bool performSharedDaughterCut = true;
+
   int runshlcms = 0;
 
   int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
@@ -348,6 +350,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
 
           if(ichg == 0) //V0LL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
@@ -364,6 +367,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 2) //VOLAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
@@ -372,6 +376,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 3) //V0PL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
@@ -380,6 +385,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 4) //V0APL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,11);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -390,6 +396,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 5) //V0PAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,11); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -400,6 +407,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 6) //V0APAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
index a2c0b01..7395e54 100644 (file)
@@ -78,6 +78,8 @@ AliFemtoManager* ConfigFemtoAnalysis() {
   int numOfChTypes = 10;
   int numOfkTBins = 2;
 
+  bool performSharedDaughterCut = true;
+
   int runshlcms = 0;
 
   int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
@@ -348,6 +350,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
 
           if(ichg == 0) //V0LL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
@@ -356,6 +359,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 1) //V0ALAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
@@ -364,6 +368,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 2) //VOLAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
@@ -372,6 +377,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 3) //V0PL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
@@ -380,6 +386,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 4) //V0APL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,11);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -390,6 +397,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 5) //V0PAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,11); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -400,6 +408,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 6) //V0APAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
index 17bbf3b..98b7d6b 100644 (file)
@@ -78,6 +78,8 @@ AliFemtoManager* ConfigFemtoAnalysis() {
   int numOfChTypes = 10;
   int numOfkTBins = 2;
 
+  bool performSharedDaughterCut = true;
+
   int runshlcms = 0;
 
   int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
@@ -348,6 +350,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
 
           if(ichg == 0) //V0LL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
@@ -356,6 +359,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 1) //V0ALAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
@@ -364,6 +368,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 2) //VOLAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
@@ -372,6 +377,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 3) //V0PL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
@@ -380,6 +386,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 4) //V0APL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,11);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -390,6 +397,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 5) //V0PAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,11); //0 - track-pos, 1 - track-neg
             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
@@ -400,6 +408,7 @@ AliFemtoManager* ConfigFemtoAnalysis() {
           }
           else if(ichg == 6) //V0APAL
           {
+            anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
index 6406229..14a3c39 100644 (file)
@@ -70,4 +70,5 @@
 #pragma link C++ class AliFemtoCutMonitorV0+;
 #pragma link C++ class AliFemtoV0TrackPairCut+;
 #pragma link C++ class AliFemtoCutMonitorCollections+;
+#pragma link C++ class AliFemtoV0SharedDaughterCut+;
 #endif