]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctn.cxx
Add support for the physics event selection
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemtoUser / AliFemtoModelBPLCMSCorrFctn.cxx
index 336bbccd42caa3d8e51c39dfe5508f885ff2a00b..83972a000b97e2dc3af1a4997947e361403f6a41 100644 (file)
@@ -9,6 +9,8 @@
 #include "AliFemtoModelBPLCMSCorrFctn.h"
 #include "AliFemtoPair.h"
 #include "AliFemtoModelManager.h"
+#include "AliFemtoKTPairCut.h"
+#include "AliFemtoAnalysisReactionPlane.h"
 #include <cstdio>
 
 #ifdef __ROOT__ 
@@ -23,7 +25,8 @@ AliFemtoModelBPLCMSCorrFctn::AliFemtoModelBPLCMSCorrFctn(char* title, const int&
   fNumerator3DFake(0),
   fDenominator3D(0),
   fQinvHisto(0),
-  fPairCut(0)
+  fPairCut(0),
+  fUseRPSelection(0)
 {
   // set up true numerator
   char tTitNumT[100] = "Num3DTrue";
@@ -54,7 +57,8 @@ AliFemtoModelBPLCMSCorrFctn::AliFemtoModelBPLCMSCorrFctn(const AliFemtoModelBPLC
   fNumerator3DFake(0),
   fDenominator3D(0),
   fQinvHisto(0),
-  fPairCut(0)
+  fPairCut(0),
+  fUseRPSelection(0)
 {
   // Copy constructor
   fNumerator3DTrue = new TH3D(*aCorrFctn.fNumerator3DTrue);
@@ -153,14 +157,33 @@ void AliFemtoModelBPLCMSCorrFctn::AddRealPair( AliFemtoPair* pair)
 {
   // Store a real pair in numerator
   if (fPairCut){
-    if (!(fPairCut->Pass(pair))) return;
+    if (fUseRPSelection) {
+      AliFemtoKTPairCut *ktc = dynamic_cast<AliFemtoKTPairCut *>(fPairCut);
+      if (!ktc) { 
+       cout << "RP aware cut requested, but not connected to the CF" << endl;
+       if (!(fPairCut->Pass(pair))) return;
+      }
+      else {
+       AliFemtoAnalysisReactionPlane *arp = dynamic_cast<AliFemtoAnalysisReactionPlane *> (HbtAnalysis());
+       if (!arp) {
+         cout << "RP aware cut requested, but not connected to the CF" << endl;
+         if (!(fPairCut->Pass(pair))) return;
+       }
+       if (!(ktc->Pass(pair, arp->GetCurrentReactionPlane()))) return;
+      }
+    }
+    else
+      if (!(fPairCut->Pass(pair))) return;
   }
+//   if (fPairCut){
+//     if (!(fPairCut->Pass(pair))) return;
+//   }
   
   Double_t weight = fManager->GetWeight(pair);
 
-  double qOut = fabs(pair->QOutCMS());
-  double qSide = fabs(pair->QSideCMS());
-  double qLong = fabs(pair->QLongCMS());
+  double qOut = (pair->QOutCMS());
+  double qSide = (pair->QSideCMS());
+  double qLong = (pair->QLongCMS());
 
   fNumerator3DTrue->Fill(qOut, qSide, qLong, weight);
   fNumeratorTrue->Fill(pair->QInv(), weight);
@@ -169,14 +192,33 @@ void AliFemtoModelBPLCMSCorrFctn::AddRealPair( AliFemtoPair* pair)
 void AliFemtoModelBPLCMSCorrFctn::AddMixedPair( AliFemtoPair* pair){
   // store mixed pair in denominator
   if (fPairCut){
-    if (!(fPairCut->Pass(pair))) return;
+    if (fUseRPSelection) {
+      AliFemtoKTPairCut *ktc = dynamic_cast<AliFemtoKTPairCut *>(fPairCut);
+      if (!ktc) { 
+       cout << "RP aware cut requested, but not connected to the CF" << endl;
+       if (!(fPairCut->Pass(pair))) return;
+      }
+      else {
+       AliFemtoAnalysisReactionPlane *arp = dynamic_cast<AliFemtoAnalysisReactionPlane *> (HbtAnalysis());
+       if (!arp) {
+         cout << "RP aware cut requested, but not connected to the CF" << endl;
+         if (!(fPairCut->Pass(pair))) return;
+       }
+       if (!(ktc->Pass(pair, arp->GetCurrentReactionPlane()))) return;
+      }
+    }
+    else
+      if (!(fPairCut->Pass(pair))) return;
   }
+//   if (fPairCut){
+//     if (!(fPairCut->Pass(pair))) return;
+//   }
 
   Double_t weight = fManager->GetWeight(pair);
 
-  double qOut = fabs(pair->QOutCMS());
-  double qSide = fabs(pair->QSideCMS());
-  double qLong = fabs(pair->QLongCMS());
+  double qOut = (pair->QOutCMS());
+  double qSide = (pair->QSideCMS());
+  double qLong = (pair->QLongCMS());
 
   fNumerator3DFake->Fill(qOut, qSide, qLong, weight);
   fDenominator3D->Fill(qOut, qSide, qLong, 1.0);
@@ -197,3 +239,8 @@ void AliFemtoModelBPLCMSCorrFctn::SetSpecificPairCut(AliFemtoPairCut* aCut)
 {
   fPairCut = aCut;
 }
+
+void AliFemtoModelBPLCMSCorrFctn::SetUseRPSelection(unsigned short aRPSel)
+{
+  fUseRPSelection = aRPSel;
+}