Adding reverse engineering tool
[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
b2a60966 16/* $Id$ */
17
6ad0bfa0 18//_________________________________________________________________________
b2a60966 19// Implementation version v1 of the PHOS particle identifier
20// Identification is based on information from PPSD and EMC
21//
2aad621e 22//*-- Author: Yves Schutz (SUBATECH) & Gines Martinez (SUBATECH)
b2a60966 23
6ad0bfa0 24
25// --- ROOT system ---
26
27// --- Standard library ---
28
de9ec31b 29#include <iostream.h>
6ad0bfa0 30
31// --- AliRoot header files ---
32
26d4b141 33#include "AliPHOSPIDv1.h"
6ad0bfa0 34#include "AliPHOSTrackSegment.h"
35#include "AliPHOSRecParticle.h"
83974468 36#include "AliPHOSIndexToObject.h"
6ad0bfa0 37
26d4b141 38ClassImp( AliPHOSPIDv1)
6ad0bfa0 39
6ad0bfa0 40//____________________________________________________________________________
88714635 41void AliPHOSPIDv1::MakeParticles(AliPHOSTrackSegment::TrackSegmentsList * trsl,
42 AliPHOSRecParticle::RecParticlesList * rpl)
6ad0bfa0 43{
b2a60966 44 // Makes a RecParticle out of a TrackSegment
6ad0bfa0 45
46 TIter next(trsl) ;
47 AliPHOSTrackSegment * tracksegment ;
48 Int_t index = 0 ;
09fc14a0 49 AliPHOSRecParticle * rp ;
0dd37dda 50 Int_t type ;
2aad621e 51 Int_t shower_profile; // 0 narrow and 1 wide
52 Int_t cpv_detector; // 1 hit and 0 no hit
53 Int_t pc_detector; // 1 hit and 0 no hit
0dd37dda 54
6ad0bfa0 55 while ( (tracksegment = (AliPHOSTrackSegment *)next()) ) {
09fc14a0 56 new( (*rpl)[index] ) AliPHOSRecParticle(tracksegment) ;
83974468 57 rp = (AliPHOSRecParticle *)rpl->At(index) ;
2aad621e 58 AliPHOSEmcRecPoint * recp = tracksegment->GetEmcRecPoint() ;
59 Float_t * lambda = new Float_t[2];
60 recp->GetElipsAxis(lambda) ;
61
62 // Looking at the lateral development of the shower
63 if ( ( lambda[0] > fLambda1m && lambda[0] < fLambda1M ) && // shower profile cut
64 ( lambda[1] > fLambda2m && lambda[1] < fLambda2M ) ) shower_profile = 0 ; // NARROW PROFILE
65 else shower_profile = 1 ;// WIDE PROFILE
66
67 // Looking at the photon conversion detector
68 if( tracksegment->GetPpsdLowRecPoint() == 0 ) pc_detector = 0; // No hit
69 else pc_detector = 1; // hit
70
71 // Looking at the photon conversion detector
72 if( tracksegment->GetPpsdUpRecPoint() == 0 ) cpv_detector = 0; // No hit
73 else cpv_detector = 1; // Hit
74
75 type = shower_profile + 2*pc_detector + 4*cpv_detector;
09fc14a0 76 rp->SetType(type) ;
6ad0bfa0 77 index++ ;
78 }
79
80}
81
09fc14a0 82//____________________________________________________________________________
83void AliPHOSPIDv1:: Print()
84{
b2a60966 85 // Print the parameters used for the particle type identification
86
09fc14a0 87 cout << "AliPHOSPIDv1 : cuts for the particle idendification based on the shower profile " << endl
88 << fLambda1m << " < value1 < " << fLambda1M << endl
89 << fLambda2m << " < value2 < " << fLambda2M << endl ;
90
91}
92
93//____________________________________________________________________________
94void AliPHOSPIDv1::SetShowerProfileCuts(Float_t l1m, Float_t l1M, Float_t l2m, Float_t l2M)
95{
b2a60966 96 // Modifies the parameters used for the particle type identification
97
09fc14a0 98 fLambda1m = l1m ;
99 fLambda1M = l1M ;
100 fLambda2m = l2m ;
101 fLambda2M = l2M ;
102}