Full PID delegated to AliPHOSPID
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.cxx
CommitLineData
6ad0bfa0 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16//_________________________________________________________________________
26d4b141 17// Algorithm class to identify the type of particle from the PHOS TrackSegment alone
6ad0bfa0 18//*-- Author : Y. Schutz SUBATECH
19//////////////////////////////////////////////////////////////////////////////
20
21// --- ROOT system ---
22
23// --- Standard library ---
24
25#include <iostream>
26
27// --- AliRoot header files ---
28
26d4b141 29#include "AliPHOSPIDv1.h"
6ad0bfa0 30#include "AliPHOSTrackSegment.h"
31#include "AliPHOSRecParticle.h"
32
26d4b141 33ClassImp( AliPHOSPIDv1)
6ad0bfa0 34
35
36//____________________________________________________________________________
09fc14a0 37 AliPHOSPIDv1::AliPHOSPIDv1(): fCutOnDispersion(1.5)
38
6ad0bfa0 39{
40 // ctor
41
42}
43
44//____________________________________________________________________________
26d4b141 45 AliPHOSPIDv1::~AliPHOSPIDv1()
6ad0bfa0 46{
47 // dtor
48}
49
50
51//____________________________________________________________________________
0dd37dda 52void AliPHOSPIDv1::MakeParticles(TrackSegmentsList * trsl, RecParticlesList * rpl)
6ad0bfa0 53{
54 // main function, does the job
55
56 TIter next(trsl) ;
57 AliPHOSTrackSegment * tracksegment ;
58 Int_t index = 0 ;
09fc14a0 59 AliPHOSRecParticle * rp ;
0dd37dda 60 Int_t type ;
61
6ad0bfa0 62 while ( (tracksegment = (AliPHOSTrackSegment *)next()) ) {
09fc14a0 63 new( (*rpl)[index] ) AliPHOSRecParticle(tracksegment) ;
64 rp = (AliPHOSRecParticle *)(*rpl)[index] ;
0dd37dda 65
66 // try to figure out the type of particle:
67 // 1. just looking at the PPSD information
68 if( tracksegment->GetPpsdUp() == 0 ) { // Neutral
69
70 if( tracksegment->GetPpsdLow() == 0 ) // Neutral
71 type = kNEUTRAL ;
72 else // Gamma
73 type = kGAMMA ;
74 }
75 else // Charged
76 type = kCHARGED ;
77
78 // 2. from the shower profile analysis
79 if ( type == kNEUTRAL ) {
09fc14a0 80 AliPHOSEmcRecPoint * recp = tracksegment->GetEmcRecPoint() ;
81 Float_t * lambda = new Float_t[2];
82 recp->GetElipsAxis(lambda) ;
83 if ( ( lambda[0] > fLambda1m && lambda[0] < fLambda1M ) && // shower profile cut
84 ( lambda[1] > fLambda2m && lambda[1] < fLambda2M ) )
b9bbdad1 85 type = kNEUTRALEM ;
09fc14a0 86 else
b9bbdad1 87 type = kNEUTRALHADRON ;
09fc14a0 88 delete lambda ;
89 }
0dd37dda 90
91 // 3. from the shower dispersion
09fc14a0 92 if (type == kCHARGED) {
93 if( tracksegment->GetEmcRecPoint()->GetDispersion() > fCutOnDispersion) // shower dispersion cut
94 type = kCHARGEDHADRON ;
95 else
96 type = kELECTRON ;
97 }
98 rp->SetType(type) ;
6ad0bfa0 99 index++ ;
100 }
101
102}
103
09fc14a0 104//____________________________________________________________________________
105void AliPHOSPIDv1:: Print()
106{
107 cout << "AliPHOSPIDv1 : cuts for the particle idendification based on the shower profile " << endl
108 << fLambda1m << " < value1 < " << fLambda1M << endl
109 << fLambda2m << " < value2 < " << fLambda2M << endl ;
110
111}
112
113//____________________________________________________________________________
114void AliPHOSPIDv1::SetShowerProfileCuts(Float_t l1m, Float_t l1M, Float_t l2m, Float_t l2M)
115{
116 fLambda1m = l1m ;
117 fLambda1M = l1M ;
118 fLambda2m = l2m ;
119 fLambda2M = l2M ;
120}