--- /dev/null
+#include "AliHBTCorrFitFctn.h"
+//____________________________________________________________
+///////////////////////////////////////////////////////////////
+// //
+// class AliHBTCorrFitFctn //
+// //
+// //
+///////////////////////////////////////////////////////////////
+
+#include "AliHBTLLWeights.h"
+
+
+ClassImp(AliHBTCorrFitFctn)
+
+/*****************************************************************/
+
+AliHBTCorrFitFctn::AliHBTCorrFitFctn(Int_t nbins, Double_t maxXval, Double_t minXval):
+ AliHBTTwoPairFctn1D(nbins,maxXval,minXval),
+ fNtuple(new TNtuple("pair", "pair", "px1:py1:pz1:e1:px2:py2:pz2:e2")),
+ fNPairsFitArea(0),
+ fNPairsNormArea(0)
+{
+//ctor
+ fWriteNumAndDen = kTRUE;//change default behaviour
+ Rename("wqinvcfCorrFit","Lednicky Weught Theoretical Q_{inv} Correlation Function");
+}
+/*****************************************************************/
+
+void AliHBTCorrFitFctn::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+ //Fills the numerator using pair from the same event
+ partpair = CheckPair(partpair);
+ if(partpair == 0x0) return;
+
+ Double_t q = trackpair->GetQInv();
+ Bool_t fill = kFALSE;
+
+ if ( (q < 0.15) && (fNPairsFitArea < 2.e+5))
+ {
+ fNPairsFitArea++;
+ fill = kTRUE;
+ }
+
+ if ( (q > 0.15) && (q < 0.3) && (fNPairsFitArea < 1.e+5))
+ {
+ fNPairsNormArea++;
+ fill = kTRUE;
+ }
+
+ if (fill)
+ {
+ Double_t weight = AliHBTLLWeights::Instance()->GetWeight(partpair);
+ fNumerator->Fill(q,weight);
+ const AliHBTParticle& p1 = *(trackpair->Particle1());
+ const AliHBTParticle& p2 = *(trackpair->Particle2());
+ fNtuple->Fill(p1.Px(),p1.Py(),p1.Pz(),p1.Energy(),
+ p2.Px(),p2.Py(),p2.Pz(),p2.Energy());
+ }
+}
+/****************************************************************/
+
+void AliHBTCorrFitFctn::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
+{
+ // Fills the denominator using mixed pairs
+ trackpair = CheckPair(trackpair);
+ partpair = CheckPair(partpair);
+ if ( trackpair && partpair)
+ {
+ fDenominator->Fill(trackpair->GetQInv());
+ }
+}
+/*****************************************************************/
+
+TH1* AliHBTCorrFitFctn::GetResult()
+{
+//returns ratio of numerator and denominator
+ return GetRatio(Scale());
+}
+/**************************************************************/
+
+void AliHBTCorrFitFctn::WriteFunction()
+{
+ //writes a function
+ AliHBTFunction::WriteFunction();
+ fNtuple->Write(0,TObject::kOverwrite);
+}
--- /dev/null
+#ifndef ALIHBTCORRFITFCTN_H
+#define ALIHBTCORRFITFCTN_H
+//____________________________________________________________
+///////////////////////////////////////////////////////////////
+// //
+// class AliHBTCorrFitFctn //
+// //
+// //
+///////////////////////////////////////////////////////////////
+
+#include "AliHBTFunction.h"
+#include <TNtuple.h>
+
+class AliHBTCorrFitFctn: public AliHBTTwoPairFctn1D
+{
+//Q Invaraint Correlation Function
+//It writes Ntuple that is input for CorrFit
+ public:
+ AliHBTCorrFitFctn(Int_t nbins = 300, Double_t maxXval = 0.3, Double_t minXval = 0.0);
+ virtual ~AliHBTCorrFitFctn(){delete fNtuple;}
+ void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+ void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+
+ TH1* GetResult();
+ void WriteFunction();
+ protected:
+ Double_t GetValue(AliHBTPair* /*trackpair*/, AliHBTPair* /*partpair*/){return 0.0;}//not usable
+
+ TNtuple* fNtuple;//ntuple for storig pairs
+ Int_t fNPairsFitArea;//number of pairs in fitting area
+ Int_t fNPairsNormArea;//number of pairs in normalization area
+ public:
+ ClassDef(AliHBTCorrFitFctn,1)
+};
+
+#endif