1 /**************************************************************************
2 * Copyright(c) 2005-2007, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 //-----------------------------------------------------------------------//
19 // ITS PID class --- method # 2 //
22 //The PID is based on the likelihood of all the four ITS' layers, //
23 //without using the truncated mean for the dE/dx. The response //
24 //functions for each layer are convoluted Landau-Gaussian functions. //
25 // Origin: Elena Bruna bruna@to.infn.it, Massimo Masera masera@to.infn.it//
26 //-----------------------------------------------------------------------//
28 #include "AliITSpidESD2.h"
29 #include "AliESDEvent.h"
30 #include "AliESDtrack.h"
31 #include "AliITStrackV2.h"
32 #include "AliITSLoader.h"
33 #include "AliITSPident.h"
34 #include "AliITSSteerPid.h"
37 ClassImp(AliITSpidESD2)
38 //_________________________________________________________________________
39 AliITSpidESD2::AliITSpidESD2():
43 // The main constructor
44 fSp=new AliITSSteerPid();
49 //_________________________________________________________________________
50 AliITSpidESD2::~AliITSpidESD2(){
57 //______________________________________________________________________
58 AliITSpidESD2::AliITSpidESD2(const AliITSpidESD2 &ob) :AliITSpidESD(ob),
65 //______________________________________________________________________
66 AliITSpidESD2& AliITSpidESD2::operator=(const AliITSpidESD2& ob ){
67 // Assignment operator
68 this->~AliITSpidESD2();
69 new(this) AliITSpidESD2(ob);
74 //______________________________________________________________________
75 void AliITSpidESD2::GetITSpidSingleTrack(AliESDtrack* esdtr, Double_t condprobfun[]){
76 // Method to calculate PID probabilities for a single track
78 Double_t dEdxsignal=esdtr->GetITSsignal();
79 Double_t momits=esdtr->GetP();
81 esdtr->GetITSdEdxSamples(qclu);
83 Float_t qclucorr[8],nlay[8];
84 for(Int_t jj=0;jj<8;jj++){
85 if(jj<4 && qclu[jj]>0){
86 qclucorr[jj]=qclu[jj];
87 nlay[jj]=jj+2; // layers numbered from 0 to 5
99 AliITSPident mypid(momits,dEdxsignal,fSp,qclucorr,nlay,prip,prik,pripi,prie);
100 condprobfun[0]=mypid.GetProdCondFunPi();//el --PID in the ITS does not distinguish among Pi,el,mu
101 condprobfun[1]=mypid.GetProdCondFunPi();//mu
102 condprobfun[2]=mypid.GetProdCondFunPi();//pi
103 condprobfun[3]=mypid.GetProdCondFunK();//kaon
104 condprobfun[4]=mypid.GetProdCondFunPro();//pro
110 //_________________________________________________________________________
111 Int_t AliITSpidESD2::MakePID(AliESDEvent *event){
112 // This function calculates the "detector response" PID probabilities
114 Int_t ntrk=event->GetNumberOfTracks();
115 const Int_t kns=AliPID::kSPECIES;
116 Double_t condprobfun[kns];
118 for (Int_t i=0; i<ntrk; i++) {
119 AliESDtrack *esdtr=event->GetTrack(i);
120 if ((esdtr->GetStatus()&AliESDtrack::kITSin )==0){
121 if ((esdtr->GetStatus()&AliESDtrack::kITSout)==0) continue;
123 GetITSpidSingleTrack(esdtr,condprobfun);
124 esdtr->SetITSpid(condprobfun);