#include <TBenchmark.h>
#include <TList.h>
+//_________________________________________________________
+///////////////////////////////////////////////////////////
+//
+//Central Object Of HBTAnalyser:
+//This class performs main looping within HBT Analysis
+//User must plug a reader of Type AliHBTReader
+//User plugs in coorelation and monitor functions
+//as well as monitor functions
+//
+//HBT Analysis Tool, which is integral part of AliRoot,
+//ALICE Off-Line framework:
+//
+//Piotr.Skowronski@cern.ch
+//more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
+//
+//_________________________________________________________
+
ClassImp(AliHBTAnalysis)
const UInt_t AliHBTAnalysis::fgkFctnArraySize = 100;
}
/*************************************************************************************/
+
void AliHBTAnalysis::DeleteFunctions()
{
+ //Deletes all functions added to analysis
UInt_t ii;
for(ii = 0;ii<fNParticleFunctions;ii++)
delete fParticleFunctions[ii];
+ fNParticleFunctions = 0;
for(ii = 0;ii<fNTrackFunctions;ii++)
delete fTrackFunctions[ii];
-
+ fNTrackFunctions = 0;
+
for(ii = 0;ii<fNParticleAndTrackFunctions;ii++)
delete fParticleAndTrackFunctions[ii];
+ fNParticleAndTrackFunctions = 0;
for(ii = 0; ii<fNParticleMonitorFunctions; ii++)
delete fParticleMonitorFunctions[ii];
+ fNParticleMonitorFunctions = 0;
for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
delete fTrackMonitorFunctions[ii];
+ fNTrackMonitorFunctions = 0;
for(ii = 0; ii<fNParticleAndTrackMonitorFunctions; ii++)
delete fParticleAndTrackMonitorFunctions[ii];
+ fNParticleAndTrackMonitorFunctions = 0;
}
+/*************************************************************************************/
+
+void AliHBTAnalysis::Init()
+{
+ UInt_t ii;
+ for(ii = 0;ii<fNParticleFunctions;ii++)
+ fParticleFunctions[ii]->Init();
+
+ for(ii = 0;ii<fNTrackFunctions;ii++)
+ fTrackFunctions[ii]->Init();
+
+ for(ii = 0;ii<fNParticleAndTrackFunctions;ii++)
+ fParticleAndTrackFunctions[ii]->Init();
+
+ for(ii = 0; ii<fNParticleMonitorFunctions; ii++)
+ fParticleMonitorFunctions[ii]->Init();
+
+ for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
+ fTrackMonitorFunctions[ii]->Init();
+
+ for(ii = 0; ii<fNParticleAndTrackMonitorFunctions; ii++)
+ fParticleAndTrackMonitorFunctions[ii]->Init();
+}
+/*************************************************************************************/
+
+void AliHBTAnalysis::ResetFunctions()
+{
+//In case fOwner is true, deletes all functions
+//in other case, just set number of analysis to 0
+ if (fIsOwner) DeleteFunctions();
+ else
+ {
+ fNParticleFunctions = 0;
+ fNTrackFunctions = 0;
+ fNParticleAndTrackFunctions = 0;
+ fNParticleMonitorFunctions = 0;
+ fNTrackMonitorFunctions = 0;
+ fNParticleAndTrackMonitorFunctions = 0;
+ }
+}
+/*************************************************************************************/
+
void AliHBTAnalysis::Process(Option_t* option)
{
//default option = "TracksAndParticles"
return;
}
-
const char *oT = strstr(option,"Tracks");
const char *oP = strstr(option,"Particles");
}
}
-
/*************************************************************************************/
void AliHBTAnalysis::ProcessTracksAndParticles()
if (fPairCut->GetFirstPartCut()->Pass(part1)) continue;
for(ii = 0; ii<fNParticleMonitorFunctions; ii++)
- fParticleMonitorFunctions[ii]->ProcessSameEventParticles(part1);
+ fParticleMonitorFunctions[ii]->Process(part1);
for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
- fTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1);
+ fTrackMonitorFunctions[ii]->Process(track1);
for(ii = 0; ii<fNParticleAndTrackMonitorFunctions; ii++)
- fParticleAndTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1,part1);
+ fParticleAndTrackMonitorFunctions[ii]->Process(track1,part1);
if ( (fNParticleFunctions == 0) && (fNTrackFunctions ==0) && (fNParticleAndTrackFunctions == 0))
continue;
if (fPairCut->GetFirstPartCut()->Pass(track1)) continue;
for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
- fTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1);
+ fTrackMonitorFunctions[ii]->Process(track1);
if ( fNTrackFunctions ==0 )
continue;
UInt_t zz;
for(zz = 0; zz<fNParticleMonitorFunctions; zz++)
- fParticleMonitorFunctions[zz]->ProcessSameEventParticles(part1);
+ fParticleMonitorFunctions[zz]->Process(part1);
if ( fNParticleFunctions ==0 )
continue;
track1= trackEvent1->GetParticle(j);
for(ii = 0; ii<fNParticleMonitorFunctions; ii++)
- fParticleMonitorFunctions[ii]->ProcessSameEventParticles(part1);
+ fParticleMonitorFunctions[ii]->Process(part1);
for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
- fTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1);
+ fTrackMonitorFunctions[ii]->Process(track1);
for(ii = 0; ii<fNParticleAndTrackMonitorFunctions; ii++)
- fParticleAndTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1,part1);
+ fParticleAndTrackMonitorFunctions[ii]->Process(track1,part1);
/***************************************/
/****** filling numerators ********/
track1= trackEvent1->GetParticle(j);
for(ii = 0; ii<fNTrackMonitorFunctions; ii++)
- fTrackMonitorFunctions[ii]->ProcessSameEventParticles(track1);
+ fTrackMonitorFunctions[ii]->Process(track1);
/***************************************/
/****** filling numerators ********/
UInt_t zz;
for(zz = 0; zz<fNParticleMonitorFunctions; zz++)
- fParticleMonitorFunctions[zz]->ProcessSameEventParticles(part1);
+ fParticleMonitorFunctions[zz]->Process(part1);
/***************************************/
/****** filling numerators ********/
}
/******************************************************************/
-void AliHBTMonOneParticleFctn1D::ProcessSameEventParticles(AliHBTParticle* particle)
+void AliHBTMonOneParticleFctn1D::Process(AliHBTParticle* particle)
{
//Fills the result
particle = CheckParticle(particle);
{
delete fResult;
}
-void AliHBTMonOneParticleFctn2D::ProcessSameEventParticles(AliHBTParticle* particle)
+void AliHBTMonOneParticleFctn2D::Process(AliHBTParticle* particle)
{
particle = CheckParticle(particle);
if(particle)
}
/******************************************************************/
void AliHBTMonTwoParticleFctn1D::
-ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
+Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
{
partparticle = CheckParticle(partparticle);
trackparticle = CheckParticle(trackparticle);
}
/******************************************************************/
void AliHBTMonTwoParticleFctn2D::
-ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
+Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
{
partparticle = CheckParticle(partparticle);
trackparticle = CheckParticle(trackparticle);
ClassImp(AliHBTMonTwoParticleFctn3D)
void AliHBTMonTwoParticleFctn3D::
-ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
+Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle)
{
partparticle = CheckParticle(partparticle);
trackparticle = CheckParticle(trackparticle);
virtual TH1* GetResult() = 0;
virtual void Write();
-
+ virtual void Init(){}
void Rename(const Char_t * name);
void Rename(const Char_t * name, const Char_t * title);
AliHBTMonOneParticleFctn(const Char_t *name, const Char_t *title):AliHBTMonitorFunction(name,title){}
virtual ~AliHBTMonOneParticleFctn(){}
- virtual void ProcessSameEventParticles(AliHBTParticle* particle) = 0;
+ virtual void Process(AliHBTParticle* particle) = 0;
protected:
public:
TH1* GetResult(){return fResult;}
- void ProcessSameEventParticles(AliHBTParticle* particle);
+ void Process(AliHBTParticle* particle);
protected:
virtual Double_t GetValue(AliHBTParticle* particle) = 0;
TH1* GetResult(){return fResult;}
- void ProcessSameEventParticles(AliHBTParticle* particle);
+ void Process(AliHBTParticle* particle);
protected:
virtual void GetValues(AliHBTParticle* particle, Double_t&, Double_t&) = 0;
virtual ~AliHBTMonTwoParticleFctn(){};
virtual void
- ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
+ Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
protected:
public:
TH1* GetResult(){return fResult;}
- void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
+ void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
protected:
virtual Double_t GetValue(AliHBTParticle* trackparticle, AliHBTParticle* partparticle) = 0;
TH1* GetResult(){return fResult;}
- void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
- void ProcessDiffEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle){};
-
+ void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
protected:
virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&) = 0;
TH1* GetResult(){return fResult;}
- void ProcessSameEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
- void ProcessDiffEventParticles(AliHBTParticle* trackparticle, AliHBTParticle* partparticle){};
-
-
+ void Process(AliHBTParticle* trackparticle, AliHBTParticle* partparticle);
+
protected:
virtual void GetValues(AliHBTParticle*,AliHBTParticle*, Double_t&, Double_t&,Double_t&) = 0;