ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */ 

// AliStarTrackCuts:
// A track cut class for the AliStarTrack
//
// origin: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)

#include <limits.h>
#include <float.h>
#include "TNamed.h"
#include "AliStarTrack.h"
#include "AliStarTrackCuts.h"

ClassImp(AliStarTrackCuts)

//-----------------------------------------------------------------------
AliStarTrackCuts::AliStarTrackCuts():
  TNamed(),
  fCutID(kFALSE),
  fIDMax(INT_MAX),
  fIDMin(INT_MIN),
  fCutCharge(kFALSE),
  fChargeMax(INT_MAX),
  fChargeMin(INT_MIN),
  fCutEta(kFALSE),
  fEtaMax(FLT_MAX),
  fEtaMin(-FLT_MAX),
  fCutPhi(kFALSE),
  fPhiMax(FLT_MAX),
  fPhiMin(-FLT_MAX),
  fCutPt(kFALSE),
  fPtMax(FLT_MAX),
  fPtMin(-FLT_MAX),
  fCutDCA(kFALSE),
  fDCAMax(FLT_MAX),
  fDCAMin(-FLT_MAX),
  fCutNHits(kFALSE),
  fNHitsMax(INT_MAX),
  fNHitsMin(INT_MIN),
  fCutNHitsFit(kFALSE),
  fNHitsFitMax(INT_MAX),
  fNHitsFitMin(INT_MIN),
  fCutNHitsPoss(kFALSE),
  fNHitsPossMax(INT_MAX),
  fNHitsPossMin(INT_MIN),
  fCutNHitsDedx(kFALSE),
  fNHitsDedxMax(INT_MAX),
  fNHitsDedxMin(INT_MIN),
  fCutdEdx(kFALSE),
  fdEdxMax(FLT_MAX),
  fdEdxMin(-FLT_MAX),
  fCutNSigElect(kFALSE),
  fNSigElectMax(FLT_MAX),
  fNSigElectMin(-FLT_MAX),
  fCutNSigPi(kFALSE),
  fNSigPiMax(FLT_MAX),
  fNSigPiMin(-FLT_MAX),
  fCutNSigK(kFALSE),
  fNSigKMax(FLT_MAX),
  fNSigKMin(-FLT_MAX),
  fCutNSigProton(kFALSE),
  fNSigProtonMax(FLT_MAX),
  fNSigProtonMin(-FLT_MAX),
  fCutFitRatio(kFALSE),
  fFitRatioMax(FLT_MAX),
  fFitRatioMin(FLT_MIN)
{
  //ctor 
}

////-----------------------------------------------------------------------
//AliStarTrackCuts::AliStarTrackCuts(const AliStarTrackCuts& that):
//  TNamed(),
//  fCutID(that.fCutID),
//  fIDMax(that.fIDMax),
//  fIDMin(that.fIDMin),
//  fCutCharge(that.fCutCharge),
//  fChargeMax(that.fChargeMax),
//  fChargeMin(that.fChargeMin),
//  fCutEta(that.fCutEta),
//  fEtaMax(that.fEtaMax),
//  fEtaMin(that.fEtaMin),
//  fCutPhi(that.fCutPhi),
//  fPhiMax(that.fPhiMax),
//  fPhiMin(that.fPhiMin),
//  fCutPt(that.fCutPt),
//  fPtMax(that.fPtMax),
//  fPtMin(that.fPtMin),
//  fCutDCA(that.fCutDCA),
//  fDCAMax(that.fDCAMax),
//  fDCAMin(that.fDCAMin),
//  fCutNHits(that.fCutNHits),
//  fNHitsMax(that.fNHitsMax),
//  fNHitsMin(that.fNHitsMin),
//  fCutNHitsFit(that.fCutNHitsFit),
//  fNHitsFitMax(that.fNHitsFitMax),
//  fNHitsFitMin(that.fNHitsFitMin),
//  fCutNHitsPoss(that.fCutNHitsPoss),
//  fNHitsPossMax(that.fNHitsPossMax),
//  fNHitsPossMin(that.fNHitsPossMin),
//  fCutNHitsDedx(that.fCutNHitsDedx),
//  fNHitsDedxMax(that.fNHitsDedxMax),
//  fNHitsDedxMin(that.fNHitsDedxMin),
//  fCutdEdx(that.fCutdEdx),
//  fdEdxMax(that.fdEdxMax),
//  fdEdxMin(that.fdEdxMin),
//  fCutNSigElect(that.fCutNSigElect),
//  fNSigElectMax(that.fNSigElectMax),
//  fNSigElectMin(that.fNSigElectMin),
//  fCutNSigPi(that.fCutNSigPi),
//  fNSigPiMax(that.fNSigPiMax),
//  fNSigPiMin(that.fNSigPiMin),
//  fCutNSigK(that.fCutNSigK),
//  fNSigKMax(that.fNSigKMax),
//  fNSigKMin(that.fNSigKMin),
//  fCutNSigProton(that.fCutNSigProton),
//  fNSigProtonMax(that.fNSigProtonMax),
//  fNSigProtonMin(that.fNSigProtonMin),
//  fCutFitRatio(that.fCutFitRatio),
//  fFitRatioMax(that.fFitRatioMax),
//  fFitRatioMin(that.fFitRatioMin)
//{
//  //copy ctor 
//}
//
////-----------------------------------------------------------------------
//AliStarTrackCuts& AliStarTrackCuts::operator=(const AliStarTrackCuts& that)
//{
//  //assignment
//  fCutID=that.fCutID;
//  fIDMax=that.fIDMax;
//  fIDMin=that.fIDMin;
//  fCutCharge=that.fCutCharge;
//  fChargeMax=that.fChargeMax;
//  fChargeMin=that.fChargeMin;
//  fCutEta=that.fCutEta;
//  fEtaMax=that.fEtaMax;
//  fEtaMin=that.fEtaMin;
//  fCutPhi=that.fCutPhi;
//  fPhiMax=that.fPhiMax;
//  fPhiMin=that.fPhiMin;
//  fCutPt=that.fCutPt;
//  fPtMax=that.fPtMax;
//  fPtMin=that.fPtMin;
//  fCutDCA=that.fCutDCA;
//  fDCAMax=that.fDCAMax;
//  fDCAMin=that.fDCAMin;
//  fCutNHits=that.fCutNHits;
//  fNHitsMax=that.fNHitsMax;
//  fNHitsMin=that.fNHitsMin;
//  fCutNHitsFit=that.fCutNHitsFit;
//  fNHitsFitMax=that.fNHitsFitMax;
//  fNHitsFitMin=that.fNHitsFitMin;
//  fCutNHitsPoss=that.fCutNHitsPoss;
//  fNHitsPossMax=that.fNHitsPossMax;
//  fNHitsPossMin=that.fNHitsPossMin;
//  fCutNHitsDedx=that.fCutNHitsDedx;
//  fNHitsDedxMax=that.fNHitsDedxMax;
//  fNHitsDedxMin=that.fNHitsDedxMin;
//  fCutdEdx=that.fCutdEdx;
//  fdEdxMax=that.fdEdxMax;
//  fdEdxMin=that.fdEdxMin;
//  fCutNSigElect=that.fCutNSigElect;
//  fNSigElectMax=that.fNSigElectMax;
//  fNSigElectMin=that.fNSigElectMin;
//  fCutNSigPi=that.fCutNSigPi;
//  fNSigPiMax=that.fNSigPiMax;
//  fNSigPiMin=that.fNSigPiMin;
//  fCutNSigK=that.fCutNSigK;
//  fNSigKMax=that.fNSigKMax;
//  fNSigKMin=that.fNSigKMin;
//  fCutNSigProton=that.fCutNSigProton;
//  fNSigProtonMax=that.fNSigProtonMax;
//  fNSigProtonMin=that.fNSigProtonMin;
//  fCutFitRatio=that.fCutFitRatio;
//  fFitRatioMax=that.fFitRatioMax;
//  fFitRatioMin=that.fFitRatioMin;
//  
//  return *this;
//}

//----------------------------------------------------------------------- 
Bool_t AliStarTrackCuts::PassesCuts(const AliStarTrack *track) const
{
  //check is track passes cuts
  if(fCutID) {if (track->GetID() < fIDMin || track->GetID() > fIDMax ) return kFALSE;} //integer values: non inclusive bound!
  if(fCutCharge) {if (track->GetCharge() < fChargeMin || track->GetCharge() > fChargeMax ) return kFALSE;}
  if(fCutEta) {if (track->GetEta() < fEtaMin || track->GetEta() >= fEtaMax ) return kFALSE;}
  if(fCutPhi) {if (track->GetPhi() < fPhiMin || track->GetPhi() >= fPhiMax ) return kFALSE;}
  if(fCutPt) {if (track->GetPt() < fPtMin || track->GetPt() >= fPtMax ) return kFALSE;}
  if(fCutDCA) {if (track->GetDCA() < fDCAMin || track->GetDCA() >= fDCAMax ) return kFALSE;}
  if(fCutNHits) {if (track->GetNHits() < fNHitsMin || track->GetNHits() > fNHitsMax ) return kFALSE;}
  if(fCutNHitsFit) {if (track->GetNHitsFit() < fNHitsFitMin || track->GetNHitsFit() > fNHitsFitMax ) return kFALSE;}
  if(fCutNHitsPoss) {if (track->GetNHitsPoss() < fNHitsPossMin || track->GetNHitsPoss() > fNHitsPossMax ) return kFALSE;}
  if(fCutNHitsDedx) {if (track->GetNHitsDedx() < fNHitsDedxMin || track->GetNHitsDedx() > fNHitsDedxMax ) return kFALSE;}
  if(fCutdEdx) {if (track->GetdEdx() < fdEdxMin || track->GetdEdx() >= fdEdxMax ) return kFALSE;}
  if(fCutNSigElect) {if (track->GetNSigElect() < fNSigElectMin || track->GetNSigElect() > fNSigElectMax ) return kFALSE;}
  if(fCutNSigPi) {if (track->GetNSigPi() < fNSigPiMin || track->GetNSigPi() > fNSigPiMax ) return kFALSE;}
  if(fCutNSigK) {if (track->GetNSigK() < fNSigKMin || track->GetNSigK() > fNSigKMax ) return kFALSE;}
  if(fCutNSigProton) {if (track->GetNSigProton() < fNSigProtonMin || track->GetNSigProton() > fNSigProtonMax ) return kFALSE;}
  if(fCutFitRatio)
  {
    Int_t nhitsposs =  track->GetNHitsPoss();
    if (nhitsposs==0) return kFALSE;
    Float_t ratio = Float_t(track->GetNHitsFit()) / nhitsposs;
    if ( ratio < fFitRatioMin && ratio >= fFitRatioMax ) return kFALSE;
  }

  return kTRUE;
}

//----------------------------------------------------------------------- 
AliStarTrackCuts* AliStarTrackCuts::StandardCuts()
{
  //return a set of standard cuts, caller becomes owner
  AliStarTrackCuts* cuts = new AliStarTrackCuts();
  cuts->SetDCAMin(0.0);     // cm
  cuts->SetDCAMax(3.0);      
  cuts->SetPtMin(0.15);      // GeV
  cuts->SetPtMax(8.0);
  cuts->SetEtaMin(-1.1);
  cuts->SetEtaMax(1.1);
  cuts->SetFitRatioMin(0.52);  // Number of hits over number of hits possible
  cuts->SetFitRatioMax(2.0);      //should not exceed 1.0 but who knows...
  cuts->SetNHitsPossMin(5);    // Don't bother to fit tracks if # possible hits is too low
  cuts->SetNHitsPossMax(100);
  cuts->SetNHitsFitMin(15);    // 15 is typical but sometimes goes as high as 25
  cuts->SetNHitsFitMax(100);   // 45 pad rows in the TPC and so anything bigger than 45+Silicon is infinite
  return cuts;
}
 AliStarTrackCuts.cxx:1
 AliStarTrackCuts.cxx:2
 AliStarTrackCuts.cxx:3
 AliStarTrackCuts.cxx:4
 AliStarTrackCuts.cxx:5
 AliStarTrackCuts.cxx:6
 AliStarTrackCuts.cxx:7
 AliStarTrackCuts.cxx:8
 AliStarTrackCuts.cxx:9
 AliStarTrackCuts.cxx:10
 AliStarTrackCuts.cxx:11
 AliStarTrackCuts.cxx:12
 AliStarTrackCuts.cxx:13
 AliStarTrackCuts.cxx:14
 AliStarTrackCuts.cxx:15
 AliStarTrackCuts.cxx:16
 AliStarTrackCuts.cxx:17
 AliStarTrackCuts.cxx:18
 AliStarTrackCuts.cxx:19
 AliStarTrackCuts.cxx:20
 AliStarTrackCuts.cxx:21
 AliStarTrackCuts.cxx:22
 AliStarTrackCuts.cxx:23
 AliStarTrackCuts.cxx:24
 AliStarTrackCuts.cxx:25
 AliStarTrackCuts.cxx:26
 AliStarTrackCuts.cxx:27
 AliStarTrackCuts.cxx:28
 AliStarTrackCuts.cxx:29
 AliStarTrackCuts.cxx:30
 AliStarTrackCuts.cxx:31
 AliStarTrackCuts.cxx:32
 AliStarTrackCuts.cxx:33
 AliStarTrackCuts.cxx:34
 AliStarTrackCuts.cxx:35
 AliStarTrackCuts.cxx:36
 AliStarTrackCuts.cxx:37
 AliStarTrackCuts.cxx:38
 AliStarTrackCuts.cxx:39
 AliStarTrackCuts.cxx:40
 AliStarTrackCuts.cxx:41
 AliStarTrackCuts.cxx:42
 AliStarTrackCuts.cxx:43
 AliStarTrackCuts.cxx:44
 AliStarTrackCuts.cxx:45
 AliStarTrackCuts.cxx:46
 AliStarTrackCuts.cxx:47
 AliStarTrackCuts.cxx:48
 AliStarTrackCuts.cxx:49
 AliStarTrackCuts.cxx:50
 AliStarTrackCuts.cxx:51
 AliStarTrackCuts.cxx:52
 AliStarTrackCuts.cxx:53
 AliStarTrackCuts.cxx:54
 AliStarTrackCuts.cxx:55
 AliStarTrackCuts.cxx:56
 AliStarTrackCuts.cxx:57
 AliStarTrackCuts.cxx:58
 AliStarTrackCuts.cxx:59
 AliStarTrackCuts.cxx:60
 AliStarTrackCuts.cxx:61
 AliStarTrackCuts.cxx:62
 AliStarTrackCuts.cxx:63
 AliStarTrackCuts.cxx:64
 AliStarTrackCuts.cxx:65
 AliStarTrackCuts.cxx:66
 AliStarTrackCuts.cxx:67
 AliStarTrackCuts.cxx:68
 AliStarTrackCuts.cxx:69
 AliStarTrackCuts.cxx:70
 AliStarTrackCuts.cxx:71
 AliStarTrackCuts.cxx:72
 AliStarTrackCuts.cxx:73
 AliStarTrackCuts.cxx:74
 AliStarTrackCuts.cxx:75
 AliStarTrackCuts.cxx:76
 AliStarTrackCuts.cxx:77
 AliStarTrackCuts.cxx:78
 AliStarTrackCuts.cxx:79
 AliStarTrackCuts.cxx:80
 AliStarTrackCuts.cxx:81
 AliStarTrackCuts.cxx:82
 AliStarTrackCuts.cxx:83
 AliStarTrackCuts.cxx:84
 AliStarTrackCuts.cxx:85
 AliStarTrackCuts.cxx:86
 AliStarTrackCuts.cxx:87
 AliStarTrackCuts.cxx:88
 AliStarTrackCuts.cxx:89
 AliStarTrackCuts.cxx:90
 AliStarTrackCuts.cxx:91
 AliStarTrackCuts.cxx:92
 AliStarTrackCuts.cxx:93
 AliStarTrackCuts.cxx:94
 AliStarTrackCuts.cxx:95
 AliStarTrackCuts.cxx:96
 AliStarTrackCuts.cxx:97
 AliStarTrackCuts.cxx:98
 AliStarTrackCuts.cxx:99
 AliStarTrackCuts.cxx:100
 AliStarTrackCuts.cxx:101
 AliStarTrackCuts.cxx:102
 AliStarTrackCuts.cxx:103
 AliStarTrackCuts.cxx:104
 AliStarTrackCuts.cxx:105
 AliStarTrackCuts.cxx:106
 AliStarTrackCuts.cxx:107
 AliStarTrackCuts.cxx:108
 AliStarTrackCuts.cxx:109
 AliStarTrackCuts.cxx:110
 AliStarTrackCuts.cxx:111
 AliStarTrackCuts.cxx:112
 AliStarTrackCuts.cxx:113
 AliStarTrackCuts.cxx:114
 AliStarTrackCuts.cxx:115
 AliStarTrackCuts.cxx:116
 AliStarTrackCuts.cxx:117
 AliStarTrackCuts.cxx:118
 AliStarTrackCuts.cxx:119
 AliStarTrackCuts.cxx:120
 AliStarTrackCuts.cxx:121
 AliStarTrackCuts.cxx:122
 AliStarTrackCuts.cxx:123
 AliStarTrackCuts.cxx:124
 AliStarTrackCuts.cxx:125
 AliStarTrackCuts.cxx:126
 AliStarTrackCuts.cxx:127
 AliStarTrackCuts.cxx:128
 AliStarTrackCuts.cxx:129
 AliStarTrackCuts.cxx:130
 AliStarTrackCuts.cxx:131
 AliStarTrackCuts.cxx:132
 AliStarTrackCuts.cxx:133
 AliStarTrackCuts.cxx:134
 AliStarTrackCuts.cxx:135
 AliStarTrackCuts.cxx:136
 AliStarTrackCuts.cxx:137
 AliStarTrackCuts.cxx:138
 AliStarTrackCuts.cxx:139
 AliStarTrackCuts.cxx:140
 AliStarTrackCuts.cxx:141
 AliStarTrackCuts.cxx:142
 AliStarTrackCuts.cxx:143
 AliStarTrackCuts.cxx:144
 AliStarTrackCuts.cxx:145
 AliStarTrackCuts.cxx:146
 AliStarTrackCuts.cxx:147
 AliStarTrackCuts.cxx:148
 AliStarTrackCuts.cxx:149
 AliStarTrackCuts.cxx:150
 AliStarTrackCuts.cxx:151
 AliStarTrackCuts.cxx:152
 AliStarTrackCuts.cxx:153
 AliStarTrackCuts.cxx:154
 AliStarTrackCuts.cxx:155
 AliStarTrackCuts.cxx:156
 AliStarTrackCuts.cxx:157
 AliStarTrackCuts.cxx:158
 AliStarTrackCuts.cxx:159
 AliStarTrackCuts.cxx:160
 AliStarTrackCuts.cxx:161
 AliStarTrackCuts.cxx:162
 AliStarTrackCuts.cxx:163
 AliStarTrackCuts.cxx:164
 AliStarTrackCuts.cxx:165
 AliStarTrackCuts.cxx:166
 AliStarTrackCuts.cxx:167
 AliStarTrackCuts.cxx:168
 AliStarTrackCuts.cxx:169
 AliStarTrackCuts.cxx:170
 AliStarTrackCuts.cxx:171
 AliStarTrackCuts.cxx:172
 AliStarTrackCuts.cxx:173
 AliStarTrackCuts.cxx:174
 AliStarTrackCuts.cxx:175
 AliStarTrackCuts.cxx:176
 AliStarTrackCuts.cxx:177
 AliStarTrackCuts.cxx:178
 AliStarTrackCuts.cxx:179
 AliStarTrackCuts.cxx:180
 AliStarTrackCuts.cxx:181
 AliStarTrackCuts.cxx:182
 AliStarTrackCuts.cxx:183
 AliStarTrackCuts.cxx:184
 AliStarTrackCuts.cxx:185
 AliStarTrackCuts.cxx:186
 AliStarTrackCuts.cxx:187
 AliStarTrackCuts.cxx:188
 AliStarTrackCuts.cxx:189
 AliStarTrackCuts.cxx:190
 AliStarTrackCuts.cxx:191
 AliStarTrackCuts.cxx:192
 AliStarTrackCuts.cxx:193
 AliStarTrackCuts.cxx:194
 AliStarTrackCuts.cxx:195
 AliStarTrackCuts.cxx:196
 AliStarTrackCuts.cxx:197
 AliStarTrackCuts.cxx:198
 AliStarTrackCuts.cxx:199
 AliStarTrackCuts.cxx:200
 AliStarTrackCuts.cxx:201
 AliStarTrackCuts.cxx:202
 AliStarTrackCuts.cxx:203
 AliStarTrackCuts.cxx:204
 AliStarTrackCuts.cxx:205
 AliStarTrackCuts.cxx:206
 AliStarTrackCuts.cxx:207
 AliStarTrackCuts.cxx:208
 AliStarTrackCuts.cxx:209
 AliStarTrackCuts.cxx:210
 AliStarTrackCuts.cxx:211
 AliStarTrackCuts.cxx:212
 AliStarTrackCuts.cxx:213
 AliStarTrackCuts.cxx:214
 AliStarTrackCuts.cxx:215
 AliStarTrackCuts.cxx:216
 AliStarTrackCuts.cxx:217
 AliStarTrackCuts.cxx:218
 AliStarTrackCuts.cxx:219
 AliStarTrackCuts.cxx:220
 AliStarTrackCuts.cxx:221
 AliStarTrackCuts.cxx:222
 AliStarTrackCuts.cxx:223
 AliStarTrackCuts.cxx:224
 AliStarTrackCuts.cxx:225
 AliStarTrackCuts.cxx:226
 AliStarTrackCuts.cxx:227
 AliStarTrackCuts.cxx:228
 AliStarTrackCuts.cxx:229
 AliStarTrackCuts.cxx:230
 AliStarTrackCuts.cxx:231
 AliStarTrackCuts.cxx:232
 AliStarTrackCuts.cxx:233
 AliStarTrackCuts.cxx:234
 AliStarTrackCuts.cxx:235
 AliStarTrackCuts.cxx:236
 AliStarTrackCuts.cxx:237
 AliStarTrackCuts.cxx:238
 AliStarTrackCuts.cxx:239
 AliStarTrackCuts.cxx:240
 AliStarTrackCuts.cxx:241
 AliStarTrackCuts.cxx:242
 AliStarTrackCuts.cxx:243
 AliStarTrackCuts.cxx:244
 AliStarTrackCuts.cxx:245