]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTLLWeightFctn.cxx
Speed optimization: LLWeight bufferred
[u/mrichter/AliRoot.git] / HBTAN / AliHBTLLWeightFctn.cxx
index 6da2224bbc9c8f07ffc7ac441ca1724cfac21409..0991d5de20115522f45ba6f928d8ec9011409811 100644 (file)
@@ -1,34 +1,51 @@
 #include "AliHBTLLWeightFctn.h"
-#include "AliHBTLLWeights.h"
+/* $Id$ */
+//_________________________________________________________________________
+//
+// class 
+//
+//This class allows to obtain Q_inv correlation function with weights
+//calculated by Lednicky's alghorithm.
+//Numerator is filled with weighted events. Weights are attributed to reconstructed tracks.
+//Weights are calculated with corresponding simulated particles momenta.
+//Denominator is filled with mixing unweighted reconstructed tracks.
+//One needs both pairs 
+//(simulated and recontructed), thus function is of class AliHBTTwoPairFctn1D.
+//Author: Ludmila Malinina, JINR (malinina@sunhe.jinr.ru)
 #include "AliHBTLLWeightsPID.h"
 
 //--for test--AliHBTLLWeightQInvFctn* yyy= new AliHBTLLWeightQInvFctn();
 
-ClassImp( AliHBTLLWeightQInvFctn )  
+ClassImp( AliHBTLLWeightQInvFctn )
+
+  
 /****************************************************************/
 AliHBTLLWeightQInvFctn::AliHBTLLWeightQInvFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
          AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
 {
 //ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqinvcf","Q_{inv} Weight Correlation Function");
 }
 /****************************************************************/
 void  AliHBTLLWeightQInvFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
 {
-//Processes Particles and tracks Same different even
+  //process particles from same events (fills numerator)
   trackpair = CheckPair(trackpair);
   partpair  = CheckPair(partpair);
   if ( trackpair && partpair)     
   {
     Double_t weightPID=1.;
-    Double_t weightHBT=AliHBTLLWeights::Instance()->GetWeight(partpair);
+    Double_t weightHBT=partpair->GetLLWeight();
     Double_t weight=weightHBT*weightPID;
-    if(TMath::Abs(weight)<=10.) fNumerator->Fill(trackpair->GetQInv(),weight);
+    if(TMath::Abs(weight)<=10.)fNumerator->Fill(trackpair->GetQInv(),weight);
   }
 } 
 /****************************************************************/
 
 void  AliHBTLLWeightQInvFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
 {
+  // Fills the denominator using mixed pairs
   trackpair = CheckPair(trackpair);
   partpair  = CheckPair(partpair);
   if ( trackpair && partpair)  
@@ -37,18 +54,345 @@ void  AliHBTLLWeightQInvFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, A
   }
 }
 /**************************************************************/
-TH1* AliHBTLLWeightQInvFctn::GetResult() 
+TH1* AliHBTLLWeightQInvFctn::GetResult()
+{ 
+//returns ratio of numerator and denominator                                    
+ return GetRatio(Scale());                                                  
+}                    
+                                                              
+/**************************************************************************************/
+/**************************************************************************************/
+/**************************************************************************************/
+/**************************************************************************************/
+
+ClassImp(AliHBTLLWeightQOutFctn)
+    
+AliHBTLLWeightQOutFctn::AliHBTLLWeightQOutFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
+{
+//ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqoutcf","Q_{out} Weight Correlation Function");
+}
+/****************************************************************/
+void AliHBTLLWeightQOutFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)  
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) fNumerator->Fill(trackpair->GetQOutCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void AliHBTLLWeightQOutFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQOutCMSLC());
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightQOutFctn::GetResult() 
                                                                                
 { 
 //returns ratio of numerator and denominator                                    
- TH1* res = GetRatio(Scale());                                                  
-  
- if(res)                                                                        
-    {                                                                             
-    res->GetXaxis()->SetTitle("Qinv [GeV/c]");                                       
-    res->GetYaxis()->SetTitle("C(Qinv)");                                          
-    res->SetTitle("Correlation function, method of weights(Lednicky's algorithm).");              
-     }                                                                             
-  return res;                                                                     
+ return GetRatio(Scale());                                                  
+}                    
+                                                              
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightQLongFctn)
+AliHBTLLWeightQLongFctn::AliHBTLLWeightQLongFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
+{
+//ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqlongcf","Q_{long} Weight Correlation Function");
+}
+/****************************************************************/
+void AliHBTLLWeightQLongFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) fNumerator->Fill(trackpair->GetQLongCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void AliHBTLLWeightQLongFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQLongCMSLC());
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightQLongFctn::GetResult() 
+                                                                               
+{ 
+//returns ratio of numerator and denominator                                    
+ return GetRatio(Scale());                                                  
+}                    
+                                                              
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightQSideFctn)
+/*************************************************************************************/ 
+
+AliHBTLLWeightQSideFctn::AliHBTLLWeightQSideFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
+{
+//ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqsidecf","Q_{side} Weight Correlation Function");
+}
+/****************************************************************/
+void AliHBTLLWeightQSideFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) fNumerator->Fill(trackpair->GetQSideCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void  AliHBTLLWeightQSideFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQSideCMSLC());
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightQSideFctn::GetResult() 
+                                                                               
+{ 
+//returns ratio of numerator and denominator                                    
+ return GetRatio(Scale());                                                  
 }                    
                                                               
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightTwoKStarFctn)
+/*************************************************************************************/ 
+AliHBTLLWeightTwoKStarFctn::AliHBTLLWeightTwoKStarFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval)
+{
+//ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wtwokstarcf","2*K^{*} Weight Correlation Function");
+}
+/****************************************************************/
+void AliHBTLLWeightTwoKStarFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) fNumerator->Fill(2.0*(trackpair->GetKStar()),weight);
+  }
+} 
+/****************************************************************/
+
+void  AliHBTLLWeightTwoKStarFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(2.0*(trackpair->GetKStar()));
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightTwoKStarFctn::GetResult() 
+                                                                               
+{ 
+//returns ratio of numerator and denominator                                    
+ return GetRatio(Scale());                                                  
+}                    
+                                                              
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightQOutQSideFctn)
+/*************************************************************************************/ 
+    
+AliHBTLLWeightQOutQSideFctn::AliHBTLLWeightQOutQSideFctn(Int_t nxbins, Double_t maxXval, Double_t minXval,
+                                                         Int_t nybins, Double_t maxYval, Double_t minYval):
+ AliHBTTwoPairFctn2D(nxbins,maxXval,minXval,nybins,maxYval,minYval)
+{
+  //ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqoutqsidecf","Q_{out} Q_{side} Weight Correlation Function 2D");
+}    
+/*************************************************************************************/ 
+void AliHBTLLWeightQOutQSideFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) 
+      fNumerator->Fill(trackpair->GetQOutCMSLC(),trackpair->GetQSideCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void AliHBTLLWeightQOutQSideFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQOutCMSLC(),trackpair->GetQSideCMSLC());
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightQOutQSideFctn::GetResult()
+{
+  //returns result
+  return GetRatio(Scale());
+}
+
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightQOutQLongFctn)
+/*************************************************************************************/ 
+    
+AliHBTLLWeightQOutQLongFctn::AliHBTLLWeightQOutQLongFctn(Int_t nxbins, Double_t maxXval, Double_t minXval,
+                                                         Int_t nybins, Double_t maxYval, Double_t minYval):
+ AliHBTTwoPairFctn2D(nxbins,maxXval,minXval,nybins,maxYval,minYval)
+{
+  //ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqoutqlongcf","Q_{out} Q_{long} Weight Correlation Function 2D");
+}    
+/*************************************************************************************/ 
+void AliHBTLLWeightQOutQLongFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) 
+      fNumerator->Fill(trackpair->GetQOutCMSLC(),trackpair->GetQLongCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void AliHBTLLWeightQOutQLongFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQOutCMSLC(),trackpair->GetQLongCMSLC());
+  }
+}
+/**************************************************************/
+
+TH1* AliHBTLLWeightQOutQLongFctn::GetResult()
+{
+  //returns result
+  return GetRatio(Scale());
+}
+
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+/*************************************************************************************/ 
+
+ClassImp(AliHBTLLWeightQSideQLongFctn)
+/*************************************************************************************/ 
+    
+AliHBTLLWeightQSideQLongFctn::AliHBTLLWeightQSideQLongFctn(Int_t nxbins, Double_t maxXval, Double_t minXval,
+                                                         Int_t nybins, Double_t maxYval, Double_t minYval):
+ AliHBTTwoPairFctn2D(nxbins,maxXval,minXval,nybins,maxYval,minYval)
+{
+  //ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqsideqlongcf","Q_{side} Q_{long} Weight Correlation Function 2D");
+}    
+/*************************************************************************************/ 
+void AliHBTLLWeightQSideQLongFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from same events (fills numerator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)     
+  {
+    Double_t weightPID=1.;
+    Double_t weightHBT=partpair->GetLLWeight();
+    Double_t weight=weightHBT*weightPID;
+    if(TMath::Abs(weight)<=10.) 
+      fNumerator->Fill(trackpair->GetQSideCMSLC(),trackpair->GetQLongCMSLC(),weight);
+  }
+} 
+/****************************************************************/
+
+void AliHBTLLWeightQSideQLongFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+  //process particles from diff events (fills denominator)
+  trackpair = CheckPair(trackpair);
+  partpair  = CheckPair(partpair);
+  if ( trackpair && partpair)  
+  {
+     fDenominator->Fill(trackpair->GetQSideCMSLC(),trackpair->GetQLongCMSLC());
+  }
+}
+/**************************************************************/
+TH1* AliHBTLLWeightQSideQLongFctn::GetResult()
+{
+  //returns result
+  return GetRatio(Scale());
+}