Update handling of different inputs
[u/mrichter/AliRoot.git] / HLT / JET / AliHLTJETTrackCuts.cxx
1 //-*- Mode: C++ -*-
2 // $Id: AliHLTJETTrackCuts.cxx  $
3 /**************************************************************************
4  * This file is property of and copyright by the ALICE HLT Project        * 
5  * ALICE Experiment at CERN, All rights reserved.                         *
6  *                                                                        *
7  * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
8  *                  for The ALICE HLT Project.                            *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 /** @file   AliHLTJETTrackCuts.h
20     @author Jochen Thaeder
21     @date   
22     @brief  Cuts for jet input tracks
23 */
24
25 // see header file for class documentation
26 // or
27 // refer to README to build package
28 // or
29 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
30
31 #if __GNUC__ >= 3
32 using namespace std;
33 #endif
34
35 #include "AliHLTJETTrackCuts.h"
36 #include <TDatabasePDG.h>
37
38 /** ROOT macro for the implementation of ROOT specific class methods */
39 ClassImp(AliHLTJETTrackCuts)
40
41 /*
42  * ---------------------------------------------------------------------------------
43  *                            Constructor / Destructor
44  * ---------------------------------------------------------------------------------
45  */
46   
47 // #################################################################################
48 AliHLTJETTrackCuts::AliHLTJETTrackCuts(const Char_t* name, const Char_t* title )
49   : 
50   AliAnalysisCuts(name, title),
51   fChargedOnly(kFALSE),
52   fPtMin(0.0),
53   fEtaMin(-0.9),
54   fEtaMax(0.9),
55   fPhiMin(0.0),
56   fPhiMax(6.3) {
57   // see header file for class documentation
58   // or
59   // refer to README to build package
60   // or
61   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
62
63 }
64
65 // #################################################################################
66 AliHLTJETTrackCuts::~AliHLTJETTrackCuts() {
67   // see header file for class documentation
68
69 }
70
71 /*
72  * ---------------------------------------------------------------------------------
73  *                                   Selection
74  * ---------------------------------------------------------------------------------
75  */
76
77 // #################################################################################
78 Bool_t AliHLTJETTrackCuts::IsSelected( TObject *obj ) {
79   // see header file for class documentation
80
81   Bool_t bResult = kTRUE;
82   
83   if ( ! strcmp(obj->ClassName(),"TParticle") )
84     bResult = IsSelected( dynamic_cast<TParticle*> (obj));
85   else if ( ! strcmp(obj->ClassName(),"AliESDtrack") )
86     bResult = IsSelected( dynamic_cast<AliESDtrack*> (obj));
87   else {
88     HLTError("Unknown object type %s", obj->ClassName() );
89     bResult = kFALSE;
90   }
91   
92    HLTError("Unknown object dd type %s", obj->ClassName() );
93
94   return bResult;
95 }
96
97 // #################################################################################
98 Bool_t AliHLTJETTrackCuts::IsSelected( TParticle *particle ) {
99   // see header file for class documentation
100
101   // ----------------------------------
102   //  Applied before in AliHLTMCEvent:
103   //  - Is Physical Primary  
104   //   stack->IsPhysicalPrimary(iter)
105   //  - final state
106   //   particle->GetNDaughters() == 0
107   // ----------------------------------
108
109   Bool_t bResult = kTRUE;
110
111   Int_t   status  = particle->GetStatusCode();
112   Int_t   pdgCode = TMath::Abs( particle->GetPdgCode() );
113   
114   // -- Skip non-final state particles (status != 1), neutrinos (12,14,16)
115   if ( (status != 1) || (pdgCode == 12 || pdgCode == 14 || pdgCode == 16) )
116     bResult = kFALSE;
117
118   // -- Charged particles only
119   if ( ! particle->GetPDG() )
120     bResult = kFALSE;
121   else {
122     if ( fChargedOnly && !particle->GetPDG()->Charge() )
123       bResult = kFALSE;
124   }
125
126   // -- cut on min Pt
127   if ( particle->Pt() < fPtMin )
128     bResult = kFALSE;
129
130   // -- cut on eta acceptance
131   if ( ( particle->Eta() < fEtaMin ) || ( particle->Eta() > fEtaMax ) )
132     bResult = kFALSE;
133
134   // -- cut on phi acceptance
135   if ( ( particle->Phi() < fPhiMin ) || ( particle->Phi() > fPhiMax ) )
136     bResult = kFALSE;
137
138   return bResult;
139 }
140
141 // #################################################################################
142 Bool_t AliHLTJETTrackCuts::IsSelected( AliESDtrack *esdTrack ) {
143   // see header file for class documentation
144
145   Bool_t bResult = kTRUE;
146
147   // -- cut on min Pt
148   if ( esdTrack->Pt() < fPtMin )
149     bResult = kFALSE;
150
151   // -- cut on eta acceptance
152   if ( ( esdTrack->Eta() < fEtaMin ) || ( esdTrack->Eta() > fEtaMax ) )
153     bResult = kFALSE;
154
155   // -- cut on phi acceptance
156   if ( ( esdTrack->Phi() < fPhiMin ) || ( esdTrack->Phi() > fPhiMax ) )
157     bResult = kFALSE;
158
159   return bResult;
160 }