X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HBTAN%2FAliHBTAnalysis.cxx;h=cf2be767457fb995b4af7019162d1be764be4c4c;hb=c521cd6c26d32ba98e8b6becc8a3ebf4ade0bbc8;hp=1ac601c5ef93265d1828fe17462874713fd55535;hpb=38df7095aa5af3605adf64dd67acb63833dc2556;p=u%2Fmrichter%2FAliRoot.git diff --git a/HBTAN/AliHBTAnalysis.cxx b/HBTAN/AliHBTAnalysis.cxx index 1ac601c5ef9..cf2be767457 100644 --- a/HBTAN/AliHBTAnalysis.cxx +++ b/HBTAN/AliHBTAnalysis.cxx @@ -12,6 +12,23 @@ #include #include +//_________________________________________________________ +/////////////////////////////////////////////////////////// +// +//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; @@ -90,27 +107,77 @@ AliHBTAnalysis::~AliHBTAnalysis() } /*************************************************************************************/ + void AliHBTAnalysis::DeleteFunctions() { + //Deletes all functions added to analysis UInt_t ii; for(ii = 0;iiInit(); + + for(ii = 0;iiInit(); + + for(ii = 0;iiInit(); + + for(ii = 0; iiInit(); + + for(ii = 0; iiInit(); + + for(ii = 0; iiInit(); +} +/*************************************************************************************/ + +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" @@ -143,7 +210,6 @@ void AliHBTAnalysis::Process(Option_t* option) return; } - const char *oT = strstr(option,"Tracks"); const char *oP = strstr(option,"Particles"); @@ -168,6 +234,7 @@ void AliHBTAnalysis::Process(Option_t* option) "Coherency check not passed. Maybe change the option?\n"); return; } + Init(); if (nonid) ProcessTracksAndParticlesNonIdentAnal(); else ProcessTracksAndParticles(); return; @@ -180,6 +247,7 @@ void AliHBTAnalysis::Process(Option_t* option) Error("Process","There is no data to analyze."); return; } + Init(); if (nonid) ProcessTracksNonIdentAnal(); else ProcessTracks(); return; @@ -192,13 +260,13 @@ void AliHBTAnalysis::Process(Option_t* option) Error("Process","There is no data to analyze."); return; } + Init(); if (nonid) ProcessParticlesNonIdentAnal(); else ProcessParticles(); return; } } - /*************************************************************************************/ void AliHBTAnalysis::ProcessTracksAndParticles() @@ -252,11 +320,11 @@ void AliHBTAnalysis::ProcessTracksAndParticles() if (fPairCut->GetFirstPartCut()->Pass(part1)) continue; for(ii = 0; iiProcessSameEventParticles(part1); + fParticleMonitorFunctions[ii]->Process(part1); for(ii = 0; iiProcessSameEventParticles(track1); + fTrackMonitorFunctions[ii]->Process(track1); for(ii = 0; iiProcessSameEventParticles(track1,part1); + fParticleAndTrackMonitorFunctions[ii]->Process(track1,part1); if ( (fNParticleFunctions == 0) && (fNTrackFunctions ==0) && (fNParticleAndTrackFunctions == 0)) continue; @@ -415,7 +483,7 @@ void AliHBTAnalysis::ProcessTracks() if (fPairCut->GetFirstPartCut()->Pass(track1)) continue; for(ii = 0; iiProcessSameEventParticles(track1); + fTrackMonitorFunctions[ii]->Process(track1); if ( fNTrackFunctions ==0 ) continue; @@ -539,7 +607,7 @@ void AliHBTAnalysis::ProcessParticles() UInt_t zz; for(zz = 0; zzProcessSameEventParticles(part1); + fParticleMonitorFunctions[zz]->Process(part1); if ( fNParticleFunctions ==0 ) continue; @@ -890,11 +958,11 @@ void AliHBTAnalysis::ProcessTracksAndParticlesNonIdentAnal() track1= trackEvent1->GetParticle(j); for(ii = 0; iiProcessSameEventParticles(part1); + fParticleMonitorFunctions[ii]->Process(part1); for(ii = 0; iiProcessSameEventParticles(track1); + fTrackMonitorFunctions[ii]->Process(track1); for(ii = 0; iiProcessSameEventParticles(track1,part1); + fParticleAndTrackMonitorFunctions[ii]->Process(track1,part1); /***************************************/ /****** filling numerators ********/ @@ -1046,7 +1114,7 @@ void AliHBTAnalysis::ProcessTracksNonIdentAnal() track1= trackEvent1->GetParticle(j); for(ii = 0; iiProcessSameEventParticles(track1); + fTrackMonitorFunctions[ii]->Process(track1); /***************************************/ /****** filling numerators ********/ @@ -1172,7 +1240,7 @@ void AliHBTAnalysis::ProcessParticlesNonIdentAnal() UInt_t zz; for(zz = 0; zzProcessSameEventParticles(part1); + fParticleMonitorFunctions[zz]->Process(part1); /***************************************/ /****** filling numerators ********/