ClassImp( AliHBTFunction )
AliHBTFunction::AliHBTFunction():
- fPairCut(new AliHBTEmptyPairCut()), //dummy cut
+ fPairCut(new AliAODEmptyPairCut()), //dummy cut
fWriteNumAndDen(kFALSE)
{
//Default constructor
AliHBTFunction::AliHBTFunction(const char* name,const char* title):
TNamed(name,title),
- fPairCut(new AliHBTEmptyPairCut()), //dummy cut
+ fPairCut(new AliAODEmptyPairCut()), //dummy cut
fWriteNumAndDen(kFALSE)
{
//Constructor
AliHBTFunction::AliHBTFunction(const AliHBTFunction & source):
TNamed(source),
- fPairCut((AliHBTPairCut*)source.fPairCut->Clone()),
+ fPairCut((AliAODPairCut*)source.fPairCut->Clone()),
fWriteNumAndDen(source.fWriteNumAndDen)
{
// Copy constructor needed by the coding conventions
AliHBTFunction::~AliHBTFunction()
{
//destructor
+ if (AliVAODParticle::GetDebug() > 1)
+ {
+ Info("~AliHBTFunction","Deleting %s",GetName());
+ }
delete fPairCut;
}
/******************************************************************/
{
// Assignment needed by the coding conventions
delete fPairCut;
- fPairCut = (AliHBTPairCut*)source.fPairCut->Clone();
+ fPairCut = (AliAODPairCut*)source.fPairCut->Clone();
return * this;
}
void AliHBTFunction::WriteFunction()
{
//writes result of the function to file
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","%s",GetName());
if (fWriteNumAndDen)
{
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Num & Den");
if (GetNumerator()) GetNumerator()->Write();
if (GetDenominator()) GetDenominator()->Write();
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Num & Den Done");
}
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Getting Result");
TH1* res = GetResult();
- if (res) res->Write();
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Getting Result Done");
+
+ if (res)
+ {
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Result");
+ res->Write();
+ if (AliVAODParticle::GetDebug()) Info("AliHBTFunction","Writing Result Done");
+ }
}
/******************************************************************/
{
//returns ratio of numerator and denominator
//
- if (AliHBTParticle::GetDebug()>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
+ if (AliVAODParticle::GetDebug()>0) Info("GetRatio","Norm. Factor is %f for %s",normfactor,GetName());
if (normfactor == 0.0)
{
}
TString str = fName + " ratio";
TH1 *result = (TH1*)GetNumerator()->Clone(str.Data());
+ result->SetDirectory(0x0);
result->SetTitle(str.Data());
}
/******************************************************************/
-void AliHBTFunction::SetPairCut(AliHBTPairCut* cut)
+void AliHBTFunction::SetPairCut(AliAODPairCut* cut)
{
//Sets new Pair Cut. Old one is deleted
//Note that it is created new object instead of simple pointer set
return;
}
delete fPairCut;
- fPairCut = (AliHBTPairCut*)cut->Clone();
+ fPairCut = (AliAODPairCut*)cut->Clone();
}
{
//Iniotializes fctn.: Resets histograms
//In case histograms are not created in ctor, builds with default parameters
+ if (AliVAODParticle::GetDebug()>1) Info("InitFunction","%s",GetName());
if ( !(GetNumerator()&&GetDenominator()) ) BuildHistos();
GetNumerator()->Reset();
GetDenominator()->Reset();
+
+ GetNumerator()->SetDirectory(0x0);
+ GetDenominator()->SetDirectory(0x0);
+ if (AliVAODParticle::GetDebug()>1) Info("InitFunction","Done");
+}
+/******************************************************************/
+/******************************************************************/
+/******************************************************************/
+ClassImp(AliHBTCorrelFunction)
+//____________________________________________
+//////////////////////////////////////////////
+//
+// class AliHBTCorrelFunction
+//
+// Base class for correlation fuctions, that is which returns ratio.
+// Stores pointer the created ratio histogram and deletes it when function is deleted
+// created in order to evoid memory leak
+//
+////////////////////////////////////////////////////////
+AliHBTCorrelFunction& AliHBTCorrelFunction::operator=(const AliHBTCorrelFunction& in)
+{
+ //assigment operator
+ if (&in == this) return *this;
+ delete fRatio;
+ fRatio=(in.fRatio)?(TH1*)in.fRatio->Clone():0x0;
+ fRatio->SetDirectory(0x0);
+ return *this;
}
/******************************************************************/
//Calculates the factor that should be used to scale
//quatience of num and den to 1 at tail
- if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
if(!num)
{
Error("Scale","No numerator");
Error("Scale","Number of bins for scaling is bigger thnan number of bins in histograms");
return 0.0;
}
- if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","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 += fDenominator->GetBinContent(i);
+ numsum += fNumerator->GetBinContent(i);
}
}
- if(AliHBTParticle::GetDebug() > 0)
+ if(AliVAODParticle::GetDebug() > 0)
Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d",numsum,densum,fNBinsToScale);
if (numsum == 0) return 0.0;
Double_t ret = densum/numsum;
- if(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
return ret;
}
// Calculates the factor that should be used to scale
// quatience of fNumerator and fDenominator to 1 at
// given region
- if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
if(!fNumerator)
{
Error("Scale","No numerator");
return 0.0;
}
- if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","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 ( fNumerator->GetBinContent(i,j) > 0.0 )
{
- densum = fDenominator->GetBinContent(i,j);
- numsum = fNumerator->GetBinContent(i,j);
+ densum += fDenominator->GetBinContent(i,j);
+ numsum += fNumerator->GetBinContent(i,j);
}
}
- if(AliHBTParticle::GetDebug() > 0)
+ if(AliVAODParticle::GetDebug() > 0)
Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d",numsum,densum,fNBinsToScaleX,fNBinsToScaleY);
if (numsum == 0) return 0.0;
Double_t ret = densum/numsum;
- if(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
return ret;
}
// Calculates the factor that should be used to scale
// quatience of fNumerator and fDenominator to 1 at
// given volume
- if (AliHBTParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","Enetered Scale()");
if(!fNumerator)
{
Error("Scale","No numerator");
return 0.0;
}
- if (AliHBTParticle::GetDebug()>0) Info("Scale","No errors detected");
+ if (AliVAODParticle::GetDebug()>0) Info("Scale","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 ( fNumerator->GetBinContent(i,j,k) > 0.0 )
{
- densum = fDenominator->GetBinContent(i,j,k);
- numsum = fNumerator->GetBinContent(i,j,k);
+ densum += fDenominator->GetBinContent(i,j,k);
+ numsum += fNumerator->GetBinContent(i,j,k);
}
}
- if(AliHBTParticle::GetDebug() > 0)
+ if(AliVAODParticle::GetDebug() > 0)
Info("Scale","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(AliHBTParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
+ if(AliVAODParticle::GetDebug() > 0) Info("Scale","returning %f",ret);
return ret;
}
/******************************************************************/
// Fills the numerator using pairs from the same event
partpair = CheckPair(partpair);
if( partpair == 0x0) return;
-
- if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
Double_t x = GetValue(trackpair,partpair);
fNumerator->Fill(x);
partpair = CheckPair(partpair);
if( partpair == 0x0) return;
- if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
-
Double_t x = GetValue(trackpair,partpair);
fDenominator->Fill(x);
}
partpair = CheckPair(partpair); //check cuts
if (partpair == 0x0) return;
- if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
-
Double_t x,y;
GetValues(trackpair,partpair,x,y);
fNumerator->Fill(x,y);
partpair = CheckPair(partpair);
if (partpair == 0x0) return;
- if (partpair->GetSwapedPair() == 0x0)//it means that Check pair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
-
Double_t x,y;
GetValues(trackpair,partpair,x,y);
fDenominator->Fill(x,y);
partpair = CheckPair(partpair);
if( partpair == 0x0) return;
- if (partpair->GetSwapedPair() == 0x0)//it means that CheckPair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
-
Double_t x,y,z;
GetValues(trackpair,partpair,x,y,z);
fNumerator->Fill(x,y,z);
partpair = CheckPair(partpair);
if( partpair == 0x0) return;
- if (partpair->GetSwapedPair() == 0x0)//it means that CheckPair returned swapped pair
- trackpair = trackpair->GetSwapedPair();//so the track pair must be swapped as well
-
Double_t x,y,z;
GetValues(trackpair,partpair,x,y,z);
fDenominator->Fill(x,y,z);