From 0dd37dda8289f84da1ae402fedcfde0f0605e28a Mon Sep 17 00:00:00 2001 From: schutz Date: Thu, 17 Feb 2000 16:44:58 +0000 Subject: [PATCH] Full PID delegated to AliPHOSPID --- PHOS/AliPHOSAnalyze.cxx | 2 +- PHOS/AliPHOSPID.h | 2 +- PHOS/AliPHOSPIDv1.cxx | 23 ++++++++++++++++++++--- PHOS/AliPHOSPIDv1.h | 2 +- PHOS/AliPHOSRecParticle.cxx | 15 ++------------- PHOS/AliPHOSReconstructioner.cxx | 2 +- 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/PHOS/AliPHOSAnalyze.cxx b/PHOS/AliPHOSAnalyze.cxx index ca704bb8d50..3f2d8ffad1d 100644 --- a/PHOS/AliPHOSAnalyze.cxx +++ b/PHOS/AliPHOSAnalyze.cxx @@ -249,7 +249,7 @@ void AliPHOSAnalyze::AnalyzeOneEvent(Int_t evt) //fhNeutralEMPositionY->Fill(recpart. ) ; //cout << "NEUTRAL EM" << endl; break ; - case kCHARGEDHADRON : + case kCHARGEDHADRON: fhChargedHadronEnergy->Fill(recparticle->Energy() ) ; //fhChargedHadronPositionX->Fill(recpart. ) ; //fhChargedHadronPositionY->Fill(recpart. ) ; diff --git a/PHOS/AliPHOSPID.h b/PHOS/AliPHOSPID.h index 2f99a522747..f538eb0d1de 100644 --- a/PHOS/AliPHOSPID.h +++ b/PHOS/AliPHOSPID.h @@ -36,7 +36,7 @@ public: AliPHOSPID() ; // ctor virtual ~AliPHOSPID() ; // dtor - virtual void GetParticleType(TrackSegmentsList * trsl, RecParticlesList * rpl) {} ; + virtual void MakeParticles(TrackSegmentsList * trsl, RecParticlesList * rpl) {} ; virtual void SetShowerProfileCuts(Float_t, Float_t, Float_t, Float_t) {} ; virtual void SetDispersionCutOff(Float_t ) {} diff --git a/PHOS/AliPHOSPIDv1.cxx b/PHOS/AliPHOSPIDv1.cxx index 4454fce2a78..f4e934e96c9 100644 --- a/PHOS/AliPHOSPIDv1.cxx +++ b/PHOS/AliPHOSPIDv1.cxx @@ -49,7 +49,7 @@ ClassImp( AliPHOSPIDv1) //____________________________________________________________________________ -void AliPHOSPIDv1::GetParticleType(TrackSegmentsList * trsl, RecParticlesList * rpl) +void AliPHOSPIDv1::MakeParticles(TrackSegmentsList * trsl, RecParticlesList * rpl) { // main function, does the job @@ -57,11 +57,26 @@ void AliPHOSPIDv1::GetParticleType(TrackSegmentsList * trsl, RecParticlesList * AliPHOSTrackSegment * tracksegment ; Int_t index = 0 ; AliPHOSRecParticle * rp ; + Int_t type ; + while ( (tracksegment = (AliPHOSTrackSegment *)next()) ) { new( (*rpl)[index] ) AliPHOSRecParticle(tracksegment) ; rp = (AliPHOSRecParticle *)(*rpl)[index] ; - Int_t type = rp->GetType() ; - if ( type == kNEUTRAL ) { // resolve neutral baryon from photon + + // try to figure out the type of particle: + // 1. just looking at the PPSD information + if( tracksegment->GetPpsdUp() == 0 ) { // Neutral + + if( tracksegment->GetPpsdLow() == 0 ) // Neutral + type = kNEUTRAL ; + else // Gamma + type = kGAMMA ; + } + else // Charged + type = kCHARGED ; + + // 2. from the shower profile analysis + if ( type == kNEUTRAL ) { AliPHOSEmcRecPoint * recp = tracksegment->GetEmcRecPoint() ; Float_t * lambda = new Float_t[2]; recp->GetElipsAxis(lambda) ; @@ -72,6 +87,8 @@ void AliPHOSPIDv1::GetParticleType(TrackSegmentsList * trsl, RecParticlesList * type = kNEUTRALHADRON ; delete lambda ; } + + // 3. from the shower dispersion if (type == kCHARGED) { if( tracksegment->GetEmcRecPoint()->GetDispersion() > fCutOnDispersion) // shower dispersion cut type = kCHARGEDHADRON ; diff --git a/PHOS/AliPHOSPIDv1.h b/PHOS/AliPHOSPIDv1.h index 4ddb24df226..e983074b358 100644 --- a/PHOS/AliPHOSPIDv1.h +++ b/PHOS/AliPHOSPIDv1.h @@ -28,7 +28,7 @@ public: AliPHOSPIDv1() ; virtual ~ AliPHOSPIDv1() ; // dtor - virtual void GetParticleType(TrackSegmentsList * trsl, RecParticlesList * rpl ) ; // does the job + virtual void MakeParticles(TrackSegmentsList * trsl, RecParticlesList * rpl ) ; // does the job void Print() ; virtual void SetDispersionCutOff(Float_t Dcut) {fCutOnDispersion = Dcut ; } virtual void SetShowerProfileCuts(Float_t l1m, Float_t l1M, Float_t l2m, Float_t l2M) ; diff --git a/PHOS/AliPHOSRecParticle.cxx b/PHOS/AliPHOSRecParticle.cxx index 8add627439f..7efe03b62e1 100644 --- a/PHOS/AliPHOSRecParticle.cxx +++ b/PHOS/AliPHOSRecParticle.cxx @@ -40,19 +40,8 @@ ClassImp(AliPHOSRecParticle) fPx = fE * momdir.X() ; fPy = fE * momdir.Y() ; fPz = fE * momdir.Z() ; - - fType = kUNDEFINED ; // undefined - - if( ts->GetPpsdUp() == 0 ) { // Neutral - - if( ts->GetPpsdLow() == 0 ) // Neutral - fType = kNEUTRAL ; - else // Gamma - fType = kGAMMA ; - } - else // Charged - fType = kCHARGED ; - + fType = kUNDEFINED ; + } //____________________________________________________________________________ diff --git a/PHOS/AliPHOSReconstructioner.cxx b/PHOS/AliPHOSReconstructioner.cxx index eea1e4aca96..173879e8e97 100644 --- a/PHOS/AliPHOSReconstructioner.cxx +++ b/PHOS/AliPHOSReconstructioner.cxx @@ -75,5 +75,5 @@ AliPHOSReconstructioner::~AliPHOSReconstructioner() fTrackSegmentMaker->MakeTrackSegments(dl, emccl, ppsdl, trsl) ; - fPID->GetParticleType(trsl, rpl) ; + fPID->MakeParticles(trsl, rpl) ; } -- 2.39.3