X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HBTAN%2FAliHBTAnalysis.cxx;h=b330210a23293ac3c27faa63299e2048d836f145;hb=ad8ada26eab17066b590ebd132a50c17cb6557ff;hp=e6ebb15e029c5e51231b1da9ece1e8fde9725dae;hpb=cea0a06645c65fb78ffff536fa39ca8457da36ca;p=u%2Fmrichter%2FAliRoot.git diff --git a/HBTAN/AliHBTAnalysis.cxx b/HBTAN/AliHBTAnalysis.cxx index e6ebb15e029..b330210a232 100644 --- a/HBTAN/AliHBTAnalysis.cxx +++ b/HBTAN/AliHBTAnalysis.cxx @@ -14,11 +14,13 @@ // ALICE Off-Line framework: // // Piotr.Skowronski@cern.ch -// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html +// more info: http://aliweb.cern.ch/people/skowron/analyzer/index.html // //////////////////////////////////////////////////////////////////////////// //_________________________________________________________ +#include +#include #include #include @@ -34,6 +36,7 @@ #include "AliHBTPair.h" #include "AliHBTFunction.h" #include "AliHBTMonitorFunction.h" +#include "AliLog.h" ClassImp(AliHBTAnalysis) @@ -124,7 +127,7 @@ AliHBTAnalysis::~AliHBTAnalysis() if (fIsOwner) { - if (AliVAODParticle::GetDebug()>5)Info("~AliHBTAnalysis","Is Owner: Attempting to delete functions"); + AliDebug(5,"Is Owner: Attempting to delete functions"); DeleteFunctions(); if (AliVAODParticle::GetDebug()>5)Info("~AliHBTAnalysis","Delete functions done"); } @@ -150,7 +153,15 @@ Int_t AliHBTAnalysis::ProcessEvent(AliAOD* aodrec, AliAOD* aodsim) Error("ProcessEvent","Analysis <<%s>> option not specified.",GetName()); return 1; } - if ( Rejected(aodrec,aodsim) ) return 0; + if ( Rejected(aodrec,aodsim) ) + { +// Double_t x = 0, y = 0, z = 0; +// aodrec->GetPrimaryVertex(x,y,z); +// Info("ProcessEvent","Event has vertex at %f %f %f",x,y,z); + Info("ProcessEvent","Nch is %d",aodsim->GetNumberOfCharged()); + Info("ProcessEvent","%s: Event cut rejected this event",GetName()); + return 0; + } //Move event to the apparent vertex -> must be after the event cut //It is important for any cut that use any spacial coordiantes, @@ -347,8 +358,6 @@ Int_t AliHBTAnalysis::ProcessRecAndSim(AliAOD* aodrec, AliAOD* aodsim) AliAOD * trackEvent = aodrec, *partEvent = aodsim; AliAOD* trackEvent1 = new AliAOD(); AliAOD* partEvent1 = new AliAOD(); - partEvent1->SetOwner(kTRUE); - trackEvent1->SetOwner(kTRUE); AliAOD * trackEvent2,*partEvent2; @@ -390,12 +399,12 @@ Int_t AliHBTAnalysis::ProcessRecAndSim(AliAOD* aodrec, AliAOD* aodsim) /****** filling numerators ********/ /***************************************/ if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessTracksAndParticles", + Info("ProcessRecAndSim", "Mixing particle %d with particles from the same event",j); part1= partEvent->GetParticle(j); track1= trackEvent->GetParticle(j); - + Bool_t firstcut = (this->*fkPass1)(part1,track1); if (fBufferSize != 0) if ( (firstcut == kFALSE) || ( (this->*fkPass2)(part1,track1) == kFALSE ) ) @@ -403,8 +412,8 @@ Int_t AliHBTAnalysis::ProcessRecAndSim(AliAOD* aodrec, AliAOD* aodsim) //accepted by any cut // we have to copy because reader keeps only one event - partEvent1->AddParticle(new AliAODParticle(*part1)); - trackEvent1->AddParticle(new AliAODParticle(*track1)); + partEvent1->AddParticle(part1); + trackEvent1->AddParticle(track1); } if (firstcut) continue; @@ -468,7 +477,7 @@ Int_t AliHBTAnalysis::ProcessRecAndSim(AliAOD* aodrec, AliAOD* aodsim) m++; if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessTracksAndParticles", + Info("ProcessRecAndSim", "Mixing particle %d from current event with particles from event %d",j,-m); for(Int_t l = 0; lGetNumberOfParticles();l++) // ... on all particles @@ -522,7 +531,6 @@ Int_t AliHBTAnalysis::ProcessSim(AliAOD* /*aodrec*/, AliAOD* aodsim) AliAOD* partEvent = aodsim; AliAOD* partEvent1 = new AliAOD(); - partEvent1->SetOwner(kTRUE); AliAOD* partEvent2; @@ -534,106 +542,106 @@ Int_t AliHBTAnalysis::ProcessSim(AliAOD* /*aodrec*/, AliAOD* aodsim) register UInt_t ii; - - if ( !partEvent ) { - Error("ProcessRecAndSim","Can not get event"); + Error("ProcessSim","Can not get event"); return 1; } for (Int_t j = 0; jGetNumberOfParticles() ; j++) { - /***************************************/ - /****** Looping same events ********/ - /****** filling numerators ********/ - /***************************************/ - if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessTracksAndParticles", - "Mixing particle %d with particles from the same event",j); + /***************************************/ + /****** Looping same events ********/ + /****** filling numerators ********/ + /***************************************/ + if ( (j%fDisplayMixingInfo) == 0) + Info("ProcessSim", + "Mixing particle %d with particles from the same event",j); - part1= partEvent->GetParticle(j); + part1= partEvent->GetParticle(j); - Bool_t firstcut = fPairCut->GetFirstPartCut()->Rejected(part1); + Bool_t firstcut = fPairCut->GetFirstPartCut()->Rejected(part1); - if (fBufferSize != 0) - if ( (firstcut == kFALSE) || ( fPairCut->GetSecondPartCut()->Rejected(part1) == kFALSE ) ) - { - //accepted by any cut - // we have to copy because reader keeps only one event + if (fBufferSize != 0) + if ( (firstcut == kFALSE) || ( fPairCut->GetSecondPartCut()->Rejected(part1) == kFALSE ) ) + { + //accepted by any cut + // we have to copy because reader keeps only one event - partEvent1->AddParticle(new AliAODParticle(*part1)); - } + partEvent1->AddParticle(part1); + } - if (firstcut) continue; + if (firstcut) continue; - for(ii = 0; iiProcess(part1); + for(ii = 0; iiProcess(part1); - if ( fNParticleFunctions == 0 ) continue; + if ( fNParticleFunctions == 0 ) continue; - for (Int_t k =j+1; k < partEvent->GetNumberOfParticles() ; k++) - { - part2= partEvent->GetParticle(k); - if (part1->GetUID() == part2->GetUID()) continue; - partpair->SetParticles(part1,part2); + for (Int_t k =j+1; k < partEvent->GetNumberOfParticles() ; k++) + { + part2= partEvent->GetParticle(k); + if (part1->GetUID() == part2->GetUID()) continue; + partpair->SetParticles(part1,part2); + + if(fPairCut->Rejected(partpair)) //check pair cut + { //do not meets crietria of the + if( fPairCut->Rejected((AliHBTPair*)partpair->GetSwappedPair()) ) continue; + else tmppartpair = (AliHBTPair*)partpair->GetSwappedPair(); + } + else + { + tmppartpair = partpair; + } - if(fPairCut->Rejected(partpair)) //check pair cut - { //do not meets crietria of the - if( fPairCut->Rejected((AliHBTPair*)partpair->GetSwappedPair()) ) continue; - else tmppartpair = (AliHBTPair*)partpair->GetSwappedPair(); - } - else - { - tmppartpair = partpair; - } + for(ii = 0;iiProcessSameEventParticles(tmppartpair); - for(ii = 0;iiProcessSameEventParticles(tmppartpair); + //end of 2nd loop over particles from the same event + }//for (Int_t k =j+1; k < partEvent->GetNumberOfParticles() ; k++) - //end of 2nd loop over particles from the same event - }//for (Int_t k =j+1; k < partEvent->GetNumberOfParticles() ; k++) + /***************************************/ + /***** Filling denominators *********/ + /***************************************/ + if (fBufferSize == 0) continue; - /***************************************/ - /***** Filling denominators *********/ - /***************************************/ - if (fBufferSize == 0) continue; + fPartBuffer->ResetIter(); + Int_t m = 0; + while (( partEvent2 = fPartBuffer->Next() )) + { + m++; + if ( (j%fDisplayMixingInfo) == 0) + Info("ProcessSim", + "Mixing particle %d from current event with particles from event %d",j,-m); + for(Int_t l = 0; lGetNumberOfParticles();l++) // ... on all particles + { - fPartBuffer->ResetIter(); - Int_t m = 0; - while (( partEvent2 = fPartBuffer->Next() )) - { - m++; - if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessParticles", - "Mixing particle %d from current event with particles from event %d",j,-m); - for(Int_t l = 0; lGetNumberOfParticles();l++) // ... on all particles - { - - part2= partEvent2->GetParticle(l); - partpair->SetParticles(part1,part2); - - if( fPairCut->Rejected(partpair) ) //check pair cut - { //do not meets crietria of the - if( fPairCut->Rejected((AliHBTPair*)partpair->GetSwappedPair()) ) - continue; - else - { - tmppartpair = (AliHBTPair*)partpair->GetSwappedPair(); - } - } - else - {//meets criteria of the pair cut - tmppartpair = partpair; - } - - for(ii = 0;iiProcessDiffEventParticles(tmppartpair); - - }//for(Int_t l = 0; lGetParticle(l); + partpair->SetParticles(part1,part2); + + if( fPairCut->Rejected(partpair) ) //check pair cut + { //do not meets crietria of the + if( fPairCut->Rejected((AliHBTPair*)partpair->GetSwappedPair()) ) + continue; + else + { + tmppartpair = (AliHBTPair*)partpair->GetSwappedPair(); + } + } + else + {//meets criteria of the pair cut + tmppartpair = partpair; + } + + for(ii = 0;iiProcessDiffEventParticles(tmppartpair); + + }//for(Int_t l = 0; lPush(partEvent1); //end of loop over events return 0; @@ -646,7 +654,6 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) AliAOD* trackEvent = aodrec; AliAOD* trackEvent1 = new AliAOD(); - trackEvent1->SetOwner(kTRUE); AliAOD* trackEvent2; @@ -657,7 +664,6 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) AliHBTPair * tmptrackpair; register UInt_t ii; - if ( !trackEvent ) { @@ -673,7 +679,7 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) /****** filling numerators ********/ /***************************************/ if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessTracksAndParticles", + Info("ProcessRec", "Mixing Particle %d with Particles from the same event",j); track1= trackEvent->GetParticle(j); @@ -686,7 +692,7 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) //accepted by any cut // we have to copy because reader keeps only one event - trackEvent1->AddParticle(new AliAODParticle(*track1)); + trackEvent1->AddParticle(track1); } if (firstcut) continue; @@ -694,7 +700,7 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) for(ii = 0; iiProcess(track1); - if ( fNParticleFunctions == 0 ) continue; + if ( fNTrackFunctions == 0 ) continue; for (Int_t k =j+1; k < trackEvent->GetNumberOfParticles() ; k++) { @@ -713,7 +719,7 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) } for(ii = 0;iiProcessSameEventParticles(tmptrackpair); + fTrackFunctions[ii]->ProcessSameEventParticles(tmptrackpair); //end of 2nd loop over Particles from the same event }//for (Int_t k =j+1; k < trackEvent->GetNumberOfParticles() ; k++) @@ -724,39 +730,39 @@ Int_t AliHBTAnalysis::ProcessRec(AliAOD* aodrec, AliAOD* /*aodsim*/) if (fBufferSize == 0) continue; fTrackBuffer->ResetIter(); - Int_t m = 0; - while (( trackEvent2 = fTrackBuffer->Next() )) + Int_t m = 0; + while (( trackEvent2 = fTrackBuffer->Next() )) + { + m++; + if ( (j%fDisplayMixingInfo) == 0) + Info("ProcessRec", + "Mixing Particle %d from current event with Particles from event %d",j,-m); + for(Int_t l = 0; lGetNumberOfParticles();l++) // ... on all Particles { - m++; - if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessParticles", - "Mixing Particle %d from current event with Particles from event %d",j,-m); - for(Int_t l = 0; lGetNumberOfParticles();l++) // ... on all Particles - { - - track2= trackEvent2->GetParticle(l); - trackpair->SetParticles(track1,track2); - - if( fPairCut->Rejected(trackpair) ) //check pair cut - { //do not meets crietria of the - if( fPairCut->Rejected((AliHBTPair*)trackpair->GetSwappedPair()) ) - continue; - else - { - tmptrackpair = (AliHBTPair*)trackpair->GetSwappedPair(); - } - } - else - {//meets criteria of the pair cut - tmptrackpair = trackpair; + + track2= trackEvent2->GetParticle(l); + trackpair->SetParticles(track1,track2); + + if( fPairCut->Rejected(trackpair) ) //check pair cut + { //do not meets crietria of the + if( fPairCut->Rejected((AliHBTPair*)trackpair->GetSwappedPair()) ) + continue; + else + { + tmptrackpair = (AliHBTPair*)trackpair->GetSwappedPair(); } - - for(ii = 0;iiProcessDiffEventParticles(tmptrackpair); - - }//for(Int_t l = 0; lProcessDiffEventParticles(tmptrackpair); + + }//for(Int_t l = 0; lPush(trackEvent1); //end of loop over events return 0; @@ -794,6 +800,8 @@ Int_t AliHBTAnalysis::ProcessRecAndSimNonId(AliAOD* aodrec, AliAOD* aodsim) static AliAOD aodsim1; AliAOD * trackEvent1=&aodrec1,*partEvent1=&aodsim1;//Particle that passes first particle cut, this event + trackEvent1->Reset(); + partEvent1->Reset(); AliAOD * trackEvent2=0x0,*partEvent2=0x0;//Particle that passes second particle cut, this event AliAOD * trackEvent3=0x0,*partEvent3=0x0;//Particle that passes second particle cut, events from buffer @@ -808,12 +816,6 @@ Int_t AliHBTAnalysis::ProcessRecAndSimNonId(AliAOD* aodrec, AliAOD* aodsim) register UInt_t ii; - - trackEvent1 = new AliAOD(); - partEvent1 = new AliAOD(); - trackEvent1->SetOwner(kFALSE); - partEvent1->SetOwner(kFALSE);; - /********************************/ /* Filtering out */ /********************************/ @@ -821,8 +823,6 @@ Int_t AliHBTAnalysis::ProcessRecAndSimNonId(AliAOD* aodrec, AliAOD* aodsim) { partEvent2 = new AliAOD(); trackEvent2 = new AliAOD(); - partEvent2->SetOwner(kTRUE); - trackEvent2->SetOwner(kTRUE); } FilterOut(partEvent1, partEvent2, rawpartEvent, trackEvent1, trackEvent2, rawtrackEvent); @@ -877,49 +877,49 @@ Int_t AliHBTAnalysis::ProcessRecAndSimNonId(AliAOD* aodrec, AliAOD* aodsim) } } - if ( fBufferSize == 0) continue;//do not mix diff histograms - /***************************************/ - /***** Filling denominators *********/ - /***************************************/ - fPartBuffer->ResetIter(); - fTrackBuffer->ResetIter(); + if ( fBufferSize == 0) continue;//do not mix diff histograms + /***************************************/ + /***** Filling denominators *********/ + /***************************************/ + fPartBuffer->ResetIter(); + fTrackBuffer->ResetIter(); - Int_t nmonitor = 0; + Int_t nmonitor = 0; - while ( (partEvent3 = fPartBuffer->Next() ) != 0x0) - { - trackEvent3 = fTrackBuffer->Next(); + while ( (partEvent3 = fPartBuffer->Next() ) != 0x0) + { + trackEvent3 = fTrackBuffer->Next(); - if ( (j%fDisplayMixingInfo) == 0) - Info("ProcessTracksAndParticlesNonIdentAnal", - "Mixing particle %d from current event with particles from event%d",j,-(++nmonitor)); + if ( (j%fDisplayMixingInfo) == 0) + Info("ProcessTracksAndParticlesNonIdentAnal", + "Mixing particle %d from current event with particles from event%d",j,-(++nmonitor)); - for (Int_t k = 0; k < partEvent3->GetNumberOfParticles() ; k++) - { - part2= partEvent3->GetParticle(k); - partpair->SetParticles(part1,part2); + for (Int_t k = 0; k < partEvent3->GetNumberOfParticles() ; k++) + { + part2= partEvent3->GetParticle(k); + partpair->SetParticles(part1,part2); - track2= trackEvent3->GetParticle(k); - trackpair->SetParticles(track1,track2); + track2= trackEvent3->GetParticle(k); + trackpair->SetParticles(track1,track2); - if( (this->*fkPassPairProp)(partpair,trackpair) ) //check pair cut - { //do not meets crietria of the pair cut - continue; - } - else - {//meets criteria of the pair cut - UInt_t ii; - for(ii = 0;iiProcessDiffEventParticles(partpair); + if( (this->*fkPassPairProp)(partpair,trackpair) ) //check pair cut + { //do not meets crietria of the pair cut + continue; + } + else + {//meets criteria of the pair cut + UInt_t ii; + for(ii = 0;iiProcessDiffEventParticles(partpair); - for(ii = 0;iiProcessDiffEventParticles(trackpair); + for(ii = 0;iiProcessDiffEventParticles(trackpair); - for(ii = 0;iiProcessDiffEventParticles(trackpair,partpair); - } - }// for particles event2 - }//while event2 + for(ii = 0;iiProcessDiffEventParticles(trackpair,partpair); + } + }// for particles event2 + }//while event2 }//for over particles in event1 delete fPartBuffer->Push(partEvent2); @@ -944,6 +944,7 @@ Int_t AliHBTAnalysis::ProcessSimNonId(AliAOD* /*aodrec*/, AliAOD* aodsim) static AliAOD aodsim1; AliAOD* partEvent1=&aodsim1;//Particle that passes first particle cut, this event + partEvent1->Reset(); AliAOD* partEvent2=0x0;//Particle that passes second particle cut, this event AliAOD* partEvent3=0x0;//Particle that passes second particle cut, events from buffer @@ -955,18 +956,12 @@ Int_t AliHBTAnalysis::ProcessSimNonId(AliAOD* /*aodrec*/, AliAOD* aodsim) register UInt_t ii; - - partEvent1 = new AliAOD(); - partEvent1->SetOwner(kFALSE);; - - /********************************/ /* Filtering out */ /********************************/ if (partEvent2==0x0)//in case fBufferSize == 0 and pointers are created do not eneter { partEvent2 = new AliAOD(); - partEvent2->SetOwner(kTRUE); } FilterOut(partEvent1, partEvent2, rawpartEvent); @@ -1060,11 +1055,10 @@ Int_t AliHBTAnalysis::ProcessRecNonId(AliAOD* aodrec, AliAOD* /*aodsim*/) AliVAODParticle * track1, * track2; static AliAOD aodrec1; - AliAOD * trackEvent1=&aodrec1;//Particle that passes first particle cut, this event + trackEvent1->Reset(); AliAOD * trackEvent2=0x0;//Particle that passes second particle cut, this event AliAOD * trackEvent3=0x0;//Particle that passes second particle cut, events from buffer - AliAOD* rawtrackEvent = aodrec;//this we get from Reader static AliHBTPair tpair; @@ -1074,16 +1068,12 @@ Int_t AliHBTAnalysis::ProcessRecNonId(AliAOD* aodrec, AliAOD* /*aodsim*/) register UInt_t ii; - trackEvent1 = new AliAOD(); - trackEvent1->SetOwner(kFALSE); - /********************************/ /* Filtering out */ /********************************/ if ( trackEvent2==0x0 )//in case fBufferSize == 0 and pointers are created do not eneter { trackEvent2 = new AliAOD(); - trackEvent2->SetOwner(kTRUE); } FilterOut(trackEvent1, trackEvent2, rawtrackEvent); @@ -1644,8 +1634,8 @@ void AliHBTAnalysis::FilterOut(AliAOD* outpart1, AliAOD* outpart2, AliAOD* inpar if (in2) { - outpart2->AddParticle(new AliAODParticle(*part)); - outtrack2->AddParticle(new AliAODParticle(*track)); + outpart2->AddParticle(part); + outtrack2->AddParticle(track); continue; } } @@ -1751,5 +1741,3 @@ void AliHBTAnalysis::PressAnyKey() } } -/*************************************************************************************/ -