]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEpidITS.cxx
8b9bc84cd8712564c2979833fc99e591e34ca285
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEpidITS.cxx
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 // ITS PID class
17 // checks ITS PID based on ITS dE/dx truncated mean
18 //
19 // Authors: Matus Kalisky <matus.kalisky@cern.ch>
20 //          Markus Fasel <M.Fasel@gsi.de>
21 //
22 #include <TClass.h>
23 #include <TH2F.h>
24 #include <TList.h>
25 #include <TMath.h>
26 #include <TString.h>
27
28 //#include "AliAODTrack.h"
29 //#include "AliAODMCParticle.h"
30 #include "AliESDtrack.h"
31 #include "AliLog.h"
32 #include "AliPID.h"
33 #include "AliVParticle.h"
34
35 #include "AliHFEpidITS.h"
36
37 ClassImp(AliHFEpidITS)
38
39 //___________________________________________________________________
40 AliHFEpidITS::AliHFEpidITS(const Char_t *name):
41     AliHFEpidBase(name)
42 {
43   //
44   // Default constructor
45   //
46 }
47
48 //___________________________________________________________________
49 AliHFEpidITS::AliHFEpidITS(const AliHFEpidITS &ref):
50     AliHFEpidBase("")
51 {
52   //
53   // Copy constructor
54   //
55   ref.Copy(*this);
56 }
57
58 //___________________________________________________________________
59 AliHFEpidITS &AliHFEpidITS::operator=(const AliHFEpidITS &ref){
60   //
61   // Assignment operator
62   //
63   if(this != &ref) ref.Copy(*this);
64   return *this;
65 }
66
67 //___________________________________________________________________
68 AliHFEpidITS::~AliHFEpidITS(){
69   //
70   // Destructor
71   //
72 }
73
74 //___________________________________________________________________
75 void AliHFEpidITS::Copy(TObject &o) const {
76   //
77   // Copy function
78   // Provides a deep copy
79   //
80   AliHFEpidBase::Copy(o);
81 }
82
83 //___________________________________________________________________
84 Bool_t AliHFEpidITS::InitializePID(){
85   //
86   // ITS PID initialization
87   //
88   return kTRUE;
89 }
90
91
92 //___________________________________________________________________
93 Int_t AliHFEpidITS::IsSelected(AliHFEpidObject* /*track*/, AliHFEpidQAmanager* /*pidqa*/){
94   //
95   // Does PID decision for ITS
96   // 
97   return 11;  // @TODO: Implement ITS PID decision
98 }
99
100 //___________________________________________________________________
101 Double_t AliHFEpidITS::GetITSSignalV1(AliVParticle *vtrack){
102   //
103   // Calculate the ITS signal according to the mean charge of the clusters
104   //
105   if(!TString(vtrack->IsA()->GetName()).CompareTo("AliAODTrack")){
106     AliError("PID for AODs not implemented yet");
107     return 0.;
108   }
109   AliESDtrack *track = dynamic_cast<AliESDtrack *>(vtrack);
110   Double_t signal = 0.;
111 #ifdef TRUNK
112   Double_t dedx[4];
113   track->GetITSdEdxSamples(dedx);
114   signal = TMath::Mean(4, dedx);
115 #else
116   signal = track->GetITSsignal();
117 #endif
118   Double_t p = track->GetTPCInnerParam() ? track->GetTPCInnerParam()->P() : track->P();
119   AliDebug(1, Form("Momentum: %f, ITS Signal: %f", p, signal));
120   return signal;
121 }
122
123 //___________________________________________________________________
124 Double_t AliHFEpidITS::GetITSSignalV2(AliVParticle *vtrack){
125   //
126   // Calculates the ITS signal. Truncated mean is used.
127   //
128   if(!TString(vtrack->IsA()->GetName()).CompareTo("AliAODTrack")){
129     AliError("PID for AODs not implemented yet");
130     return 0.;
131   }
132   AliESDtrack *track = dynamic_cast<AliESDtrack *>(vtrack);
133   Double_t dedx[4], tmp[4];
134   Int_t indices[4];
135   track->GetITSdEdxSamples(tmp);
136   TMath::Sort(4, tmp, indices);
137   for(Int_t ien = 0; ien < 4; ien++) dedx[ien] = tmp[indices[ien]];
138   Double_t signal = TMath::Mean(3, dedx); 
139   Double_t p = track->GetTPCInnerParam() ? track->GetTPCInnerParam()->P() : track->P();
140   AliDebug(1, Form("Momentum: %f, ITS Signal: %f", p, signal));
141   return signal;
142 }
143