+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/* $Id$ */
+
#include "AliHBTFunction.h"
+#include "AliLog.h"
-/* $Id: */
//--------------------------------------------------------------------
//AliHBTFunction
ClassImp( AliHBTFunction )
AliHBTFunction::AliHBTFunction():
- fPairCut(new AliAODEmptyPairCut()), //dummy cut
- fWriteNumAndDen(kFALSE)
+ fPairCut(new AliAODPairEmptyCut()), //dummy cut
+ fWriteNumAndDen(kFALSE),
+ fAbs(kFALSE)
{
//Default constructor
}
AliHBTFunction::AliHBTFunction(const char* name,const char* title):
TNamed(name,title),
- fPairCut(new AliAODEmptyPairCut()), //dummy cut
- fWriteNumAndDen(kFALSE)
+ fPairCut(new AliAODPairEmptyCut()), //dummy cut
+ fWriteNumAndDen(kFALSE),
+ fAbs(kFALSE)
{
//Constructor
}
AliHBTFunction::AliHBTFunction(const AliHBTFunction & source):
TNamed(source),
fPairCut((AliAODPairCut*)source.fPairCut->Clone()),
- fWriteNumAndDen(source.fWriteNumAndDen)
+ fWriteNumAndDen(source.fWriteNumAndDen),
+ fAbs(source.fAbs)
{
// Copy constructor needed by the coding conventions
}
AliHBTFunction::~AliHBTFunction()
{
//destructor
- if (AliVAODParticle::GetDebug() > 1)
- {
- Info("~AliHBTFunction","Deleting %s",GetName());
- }
+ AliDebug(1,"Deleting");
delete fPairCut;
}
/******************************************************************/
// Assignment needed by the coding conventions
delete fPairCut;
fPairCut = (AliAODPairCut*)source.fPairCut->Clone();
+ fAbs = source.fAbs;
return * this;
}
-void AliHBTFunction::WriteFunction()
+Int_t AliHBTFunction::WriteFunction()
{
//writes result of the function to file
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","%s",GetName());
+ Int_t retval =0;
+ AliDebug(1,"Entering");
if (fWriteNumAndDen)
{
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Num & Den");
+ AliDebug(1,"Writing Num & Den");
if (GetNumerator()) GetNumerator()->Write();
if (GetDenominator()) GetDenominator()->Write();
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Num & Den Done");
+ AliDebug(1,"Writing Num & Den Done");
}
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Getting Result");
+ AliDebug(1,"Getting Result");
TH1* res = GetResult();
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Getting Result Done");
+ AliDebug(1,"Getting Result Done");
if (res)
{
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Result");
- res->Write();
- if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Result Done");
+ AliDebug(1,"Writing Result");
+ retval = res->Write();
+ AliDebug(1,"Writing Result Done");
}
+ return retval;
}
/******************************************************************/
{
//returns ratio of numerator and denominator
//
- if (AliVAODParticle::GetDebug()>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
+ AliDebug(1,Form("Norm. Factor is %f for %s",normfactor,GetName()));
if (normfactor == 0.0)
{
- Error("GetRatio","Scaling Factor is 0. Null poiner returned");
+ AliError("Scaling Factor is 0. Null poiner returned");
return 0x0;
}
TString str = fName + " ratio";
if(!cut)
{
- Error("AliHBTFunction::SetPairCut","argument is NULL");
+ AliError("argument is NULL");
return;
}
delete fPairCut;
{
//Iniotializes fctn.: Resets histograms
//In case histograms are not created in ctor, builds with default parameters
- if (AliVAODParticle::GetDebug()>1) Info("InitFunction","%s",GetName());
+ AliDebug(1,"Entering");
if ( !(GetNumerator()&&GetDenominator()) ) BuildHistos();
GetNumerator()->Reset();
GetDenominator()->Reset();
GetNumerator()->SetDirectory(0x0);
GetDenominator()->SetDirectory(0x0);
- if (AliVAODParticle::GetDebug()>1) Info("InitFunction","Done");
+ AliDebug(1,"Done");
}
/******************************************************************/
/******************************************************************/
//Calculates the factor that should be used to scale
//quatience of num and den to 1 at tail
- if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ AliDebug(1,"Entered");
if(!num)
{
- Error("Scale","No numerator");
+ AliError("No numerator");
return 0.0;
}
if(!den)
{
- Error("Scale","No denominator");
+ AliError("No denominator");
return 0.0;
}
if(fNBinsToScale < 1)
{
- Error("Scale","Number of bins for scaling is smaller thnan 1");
+ AliError("Number of bins for scaling is smaller than 1");
return 0.0;
}
UInt_t nbins = num->GetNbinsX();
if (fNBinsToScale > nbins)
{
- Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
- if (AliVAODParticle::GetDebug()>0) Info("Scale","No errors detected");
+ AliDebug(1,"No errors detected");
Double_t densum = 0.0;
Double_t numsum = 0.0;
{
if ( num->GetBinContent(i) > 0.0 )
{
- densum += fDenominator->GetBinContent(i);
- numsum += fNumerator->GetBinContent(i);
+ densum += den->GetBinContent(i);
+ numsum += num->GetBinContent(i);
}
}
- if(AliVAODParticle::GetDebug() > 0)
- Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d",numsum,densum,fNBinsToScale);
+ AliDebug(1,Form("numsum=%f densum=%f fNBinsToScaleX=%d",numsum,densum,fNBinsToScale));
if (numsum == 0) return 0.0;
Double_t ret = densum/numsum;
- if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ AliDebug(1,Form("returning %f",ret));
return ret;
}
// Base Calss for 2-dimensinal Functions //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
// Calculates the factor that should be used to scale
// quatience of fNumerator and fDenominator to 1 at
// given region
- if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ AliDebug(1,"Entered");
if(!fNumerator)
{
- Error("Scale","No numerator");
+ AliError("No numerator");
return 0.0;
}
if(!fDenominator)
{
- Error("Scale","No denominator");
+ AliError("No denominator");
return 0.0;
}
if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) )
{
- Error("Scale","Number of bins for scaling is smaller thnan 1");
+ AliError("Number of bins for scaling is smaller thnan 1");
return 0.0;
}
UInt_t nbinsX = fNumerator->GetNbinsX();
if (fNBinsToScaleX > nbinsX)
{
- Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of X bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
UInt_t nbinsY = fNumerator->GetNbinsX();
if (fNBinsToScaleY > nbinsY)
{
- Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of Y bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
- if (AliVAODParticle::GetDebug()>0) Info("Scale","No errors detected");
+ AliDebug(1,"No errors detected");
Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis X
}
}
- if(AliVAODParticle::GetDebug() > 0)
- Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d",numsum,densum,fNBinsToScaleX,fNBinsToScaleY);
+ AliDebug(1,Form("numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d",
+ numsum,densum,fNBinsToScaleX,fNBinsToScaleY));
if (numsum == 0) return 0.0;
Double_t ret = densum/numsum;
- if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ AliDebug(1,Form("returning %f",ret));
return ret;
}
// Base Calss for 3-dimensinal Functions //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
Int_t nzbins, Float_t zmax, Float_t zmin)
{
//Builds numerator and denominator histograms (3d-case)
+
+ AliDebug(1,"Entered");
+
+ if (fNumerator )
+ {
+ delete fNumerator;
+ fNumerator = 0x0;
+ }
+
+ if (fDenominator )
+ {
+ delete fDenominator;
+ fDenominator = 0x0;
+ }
+
TString numstr = fName + " Numerator"; //title and name of the
//numerator histogram
TString denstr = fName + " Denominator";//title and name of the
// Calculates the factor that should be used to scale
// quatience of fNumerator and fDenominator to 1 at
// given volume
- if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ AliDebug(1,"Entered");
if(!fNumerator)
{
- Error("Scale","No numerator");
+ AliError("No numerator");
return 0.0;
}
if(!fDenominator)
{
- Error("Scale","No denominator");
+ AliError("No denominator");
return 0.0;
}
if( (fNBinsToScaleX < 1) || (fNBinsToScaleY < 1) || (fNBinsToScaleZ < 1))
{
- Error("Scale","Number of bins for scaling is smaller thnan 1");
+ AliError("Number of bins for scaling is smaller thnan 1");
return 0.0;
}
UInt_t nbinsX = fNumerator->GetNbinsX();
if (fNBinsToScaleX > nbinsX)
{
- Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of X bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
UInt_t nbinsY = fNumerator->GetNbinsX();
if (fNBinsToScaleY > nbinsY)
{
- Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of Y bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
UInt_t nbinsZ = fNumerator->GetNbinsZ();
if (fNBinsToScaleZ > nbinsZ)
{
- Error("Scale","Number of Z bins for scaling is bigger thnan number of bins in histograms");
+ AliError("Number of Z bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
- if (AliVAODParticle::GetDebug()>0) Info("Scale","No errors detected");
+ AliDebug(1,"No errors detected");
Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X
Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis Y
}
}
- if(AliVAODParticle::GetDebug() > 0)
- Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d",
- numsum,densum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ);
+ AliDebug(1,Form("numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d",
+ numsum,densum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ));
if (numsum == 0) return 0.0;
Double_t ret = densum/numsum;
- if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ AliDebug(1,Form("returning %f",ret));
return ret;
}
/******************************************************************/
// one pair to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
// one pair to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
// one pair to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
ClassImp( AliHBTOnePairFctn3D)
// to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
ClassImp(AliHBTTwoPairFctn1D)
void AliHBTTwoPairFctn1D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
// Fills the numerator using pairs from the same event
- partpair = CheckPair(partpair);
- if( partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x = GetValue(trackpair,partpair);
fNumerator->Fill(x);
void AliHBTTwoPairFctn1D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
// Fills the denumerator usin mixed pairs
- partpair = CheckPair(partpair);
- if( partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x = GetValue(trackpair,partpair);
fDenominator->Fill(x);
// to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
void AliHBTTwoPairFctn2D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
//processes pair of particles coming from a same events (real pair)
- partpair = CheckPair(partpair); //check cuts
- if (partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x,y;
GetValues(trackpair,partpair,x,y);
void AliHBTTwoPairFctn2D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
//processes pair of particles coming from a different events (mixed pair)
- partpair = CheckPair(partpair);
- if (partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x,y;
GetValues(trackpair,partpair,x,y);
// to fill function //
// //
// Piotr.Skowronski@cern.ch //
-// http://alisoft.cern.ch/people/skowron/analyzer //
+// http://aliweb.cern.ch/people/skowron/analyzer //
// //
///////////////////////////////////////////////////////
void AliHBTTwoPairFctn3D::ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
// Fills th numerator using pairs from the same event
- partpair = CheckPair(partpair);
- if( partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x,y,z;
GetValues(trackpair,partpair,x,y,z);
void AliHBTTwoPairFctn3D::ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair)
{
// Fills the denumerator using mixed pairs
- partpair = CheckPair(partpair);
- if( partpair == 0x0) return;
+ trackpair = CheckPair(trackpair);
+ if( trackpair == 0x0) return;
Double_t x,y,z;
GetValues(trackpair,partpair,x,y,z);