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.                  *
**************************************************************************/
// last change: 2011-04-04 by M.Knichel

#include <iostream>
#include <TList.h>

#include "AliLog.h"
#include "AliESDtrack.h"
#include "AliExternalTrackParam.h"
#include "TParticle.h"

#include "AlidNdPtAcceptanceCuts.h"

using namespace std;

ClassImp(AlidNdPtAcceptanceCuts)

//_____________________________________________________________________________
AlidNdPtAcceptanceCuts::AlidNdPtAcceptanceCuts(const Char_t* name,const Char_t *title) : 
AliAnalysisCuts(name, title)
, fMinEta(0)
, fMaxEta(0)
, fMinPhi(0)
, fMaxPhi(0)
, fMinPt(0)
, fMaxPt(0)
, fExcludeMinEta(0)
, fExcludeMaxEta(0)
, fExcludeMinPhi(0)
, fExcludeMaxPhi(0)
, fExcludeMinEta2(0)
, fExcludeMaxEta2(0)
, fExcludeMinPhi2(0)
, fExcludeMaxPhi2(0)
, fCheckRange(kFALSE)
, fMaxDCAr(0)
, fMaxDCAz(0)
{
  // default constructor 
  
  // init data members with defaults
  Init();
}

//_____________________________________________________________________________
AlidNdPtAcceptanceCuts::~AlidNdPtAcceptanceCuts()  
{
  // destructor
}

//_____________________________________________________________________________
void AlidNdPtAcceptanceCuts::Init()  
{
  // set default values
  SetEtaRange();
  SetPhiRange();
  SetPtRange();
  SetMaxDCAr();
  SetMaxDCAz();
}

//_____________________________________________________________________________
Bool_t AlidNdPtAcceptanceCuts::AcceptTrack(AliESDtrack *track)
{
  // check acceptance cuts for AliESDtrack
  if(!track) return kFALSE;

  Float_t eta = track->Eta();
  Float_t phi = track->Phi();
  Float_t pt = track->Pt();

  if(eta < fMinEta) return kFALSE;
  if(eta > fMaxEta) return kFALSE;
  if(phi < fMinPhi) return kFALSE;
  if(phi > fMaxPhi) return kFALSE;
  if(pt < fMinPt) return kFALSE;
  if(pt > fMaxPt) return kFALSE;
  
return kTRUE;
}

Bool_t AlidNdPtAcceptanceCuts::AcceptTrackLocalTPC(AliESDtrack *track)
{
  // check acceptance cuts for AliESDtrack
  if(!track) return kFALSE;
  const AliExternalTrackParam *innerParam =  track->GetInnerParam();
  if(!innerParam) return kFALSE;

  Float_t eta = track->Eta();
  Float_t phi = TMath::ATan2(innerParam->Py(),innerParam->Px());

  if (fCheckRange) {
      if ((eta > fExcludeMinEta) && (eta < fExcludeMaxEta) && (phi > fExcludeMinPhi) && (phi < fExcludeMaxPhi)) { return kFALSE; }
      if ((eta > fExcludeMinEta2) && (eta < fExcludeMaxEta2) && (phi > fExcludeMinPhi2) && (phi < fExcludeMaxPhi2)) { return kFALSE; }
  }

return kTRUE;
}

//_____________________________________________________________________________
Bool_t AlidNdPtAcceptanceCuts::AcceptTrack(AliExternalTrackParam *track)
{
  // check acceptance cuts for AliESDtrack
  if(!track) return kFALSE;

  Float_t eta = track->Eta();
  Float_t phi = track->Phi();
  Float_t pt = track->Pt();

  if(eta < fMinEta) return kFALSE;
  if(eta > fMaxEta) return kFALSE;
  if(phi < fMinPhi) return kFALSE;
  if(phi > fMaxPhi) return kFALSE;
  if(pt < fMinPt) return kFALSE;
  if(pt > fMaxPt) return kFALSE;

return kTRUE;
}

//_____________________________________________________________________________
Bool_t AlidNdPtAcceptanceCuts::AcceptTrack(TParticle *particle)
{
  // check acceptance cuts for TParticle
  if(!particle) return kFALSE;

  Float_t eta = particle->Eta();
  Float_t phi = particle->Phi();
  Float_t pt = particle->Pt();

  if(eta < fMinEta) return kFALSE;
  if(eta > fMaxEta) return kFALSE;
  if(phi < fMinPhi) return kFALSE;
  if(phi > fMaxPhi) return kFALSE;
  if(pt < fMinPt) return kFALSE;
  if(pt > fMaxPt) return kFALSE;

return kTRUE;
}

//_____________________________________________________________________________
Long64_t AlidNdPtAcceptanceCuts::Merge(TCollection* list) 
{
  // Merge list of objects (needed by PROOF)
  if (!list)
  return 0;

  if (list->IsEmpty())
  return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj = 0;

  Int_t count=0;
  while((obj = iter->Next()) != 0) 
  {
    AlidNdPtAcceptanceCuts* entry = dynamic_cast<AlidNdPtAcceptanceCuts*>(obj);
    if (entry == 0)  
      continue; 

  count++;
  }

return count;
}
 AlidNdPtAcceptanceCuts.cxx:1
 AlidNdPtAcceptanceCuts.cxx:2
 AlidNdPtAcceptanceCuts.cxx:3
 AlidNdPtAcceptanceCuts.cxx:4
 AlidNdPtAcceptanceCuts.cxx:5
 AlidNdPtAcceptanceCuts.cxx:6
 AlidNdPtAcceptanceCuts.cxx:7
 AlidNdPtAcceptanceCuts.cxx:8
 AlidNdPtAcceptanceCuts.cxx:9
 AlidNdPtAcceptanceCuts.cxx:10
 AlidNdPtAcceptanceCuts.cxx:11
 AlidNdPtAcceptanceCuts.cxx:12
 AlidNdPtAcceptanceCuts.cxx:13
 AlidNdPtAcceptanceCuts.cxx:14
 AlidNdPtAcceptanceCuts.cxx:15
 AlidNdPtAcceptanceCuts.cxx:16
 AlidNdPtAcceptanceCuts.cxx:17
 AlidNdPtAcceptanceCuts.cxx:18
 AlidNdPtAcceptanceCuts.cxx:19
 AlidNdPtAcceptanceCuts.cxx:20
 AlidNdPtAcceptanceCuts.cxx:21
 AlidNdPtAcceptanceCuts.cxx:22
 AlidNdPtAcceptanceCuts.cxx:23
 AlidNdPtAcceptanceCuts.cxx:24
 AlidNdPtAcceptanceCuts.cxx:25
 AlidNdPtAcceptanceCuts.cxx:26
 AlidNdPtAcceptanceCuts.cxx:27
 AlidNdPtAcceptanceCuts.cxx:28
 AlidNdPtAcceptanceCuts.cxx:29
 AlidNdPtAcceptanceCuts.cxx:30
 AlidNdPtAcceptanceCuts.cxx:31
 AlidNdPtAcceptanceCuts.cxx:32
 AlidNdPtAcceptanceCuts.cxx:33
 AlidNdPtAcceptanceCuts.cxx:34
 AlidNdPtAcceptanceCuts.cxx:35
 AlidNdPtAcceptanceCuts.cxx:36
 AlidNdPtAcceptanceCuts.cxx:37
 AlidNdPtAcceptanceCuts.cxx:38
 AlidNdPtAcceptanceCuts.cxx:39
 AlidNdPtAcceptanceCuts.cxx:40
 AlidNdPtAcceptanceCuts.cxx:41
 AlidNdPtAcceptanceCuts.cxx:42
 AlidNdPtAcceptanceCuts.cxx:43
 AlidNdPtAcceptanceCuts.cxx:44
 AlidNdPtAcceptanceCuts.cxx:45
 AlidNdPtAcceptanceCuts.cxx:46
 AlidNdPtAcceptanceCuts.cxx:47
 AlidNdPtAcceptanceCuts.cxx:48
 AlidNdPtAcceptanceCuts.cxx:49
 AlidNdPtAcceptanceCuts.cxx:50
 AlidNdPtAcceptanceCuts.cxx:51
 AlidNdPtAcceptanceCuts.cxx:52
 AlidNdPtAcceptanceCuts.cxx:53
 AlidNdPtAcceptanceCuts.cxx:54
 AlidNdPtAcceptanceCuts.cxx:55
 AlidNdPtAcceptanceCuts.cxx:56
 AlidNdPtAcceptanceCuts.cxx:57
 AlidNdPtAcceptanceCuts.cxx:58
 AlidNdPtAcceptanceCuts.cxx:59
 AlidNdPtAcceptanceCuts.cxx:60
 AlidNdPtAcceptanceCuts.cxx:61
 AlidNdPtAcceptanceCuts.cxx:62
 AlidNdPtAcceptanceCuts.cxx:63
 AlidNdPtAcceptanceCuts.cxx:64
 AlidNdPtAcceptanceCuts.cxx:65
 AlidNdPtAcceptanceCuts.cxx:66
 AlidNdPtAcceptanceCuts.cxx:67
 AlidNdPtAcceptanceCuts.cxx:68
 AlidNdPtAcceptanceCuts.cxx:69
 AlidNdPtAcceptanceCuts.cxx:70
 AlidNdPtAcceptanceCuts.cxx:71
 AlidNdPtAcceptanceCuts.cxx:72
 AlidNdPtAcceptanceCuts.cxx:73
 AlidNdPtAcceptanceCuts.cxx:74
 AlidNdPtAcceptanceCuts.cxx:75
 AlidNdPtAcceptanceCuts.cxx:76
 AlidNdPtAcceptanceCuts.cxx:77
 AlidNdPtAcceptanceCuts.cxx:78
 AlidNdPtAcceptanceCuts.cxx:79
 AlidNdPtAcceptanceCuts.cxx:80
 AlidNdPtAcceptanceCuts.cxx:81
 AlidNdPtAcceptanceCuts.cxx:82
 AlidNdPtAcceptanceCuts.cxx:83
 AlidNdPtAcceptanceCuts.cxx:84
 AlidNdPtAcceptanceCuts.cxx:85
 AlidNdPtAcceptanceCuts.cxx:86
 AlidNdPtAcceptanceCuts.cxx:87
 AlidNdPtAcceptanceCuts.cxx:88
 AlidNdPtAcceptanceCuts.cxx:89
 AlidNdPtAcceptanceCuts.cxx:90
 AlidNdPtAcceptanceCuts.cxx:91
 AlidNdPtAcceptanceCuts.cxx:92
 AlidNdPtAcceptanceCuts.cxx:93
 AlidNdPtAcceptanceCuts.cxx:94
 AlidNdPtAcceptanceCuts.cxx:95
 AlidNdPtAcceptanceCuts.cxx:96
 AlidNdPtAcceptanceCuts.cxx:97
 AlidNdPtAcceptanceCuts.cxx:98
 AlidNdPtAcceptanceCuts.cxx:99
 AlidNdPtAcceptanceCuts.cxx:100
 AlidNdPtAcceptanceCuts.cxx:101
 AlidNdPtAcceptanceCuts.cxx:102
 AlidNdPtAcceptanceCuts.cxx:103
 AlidNdPtAcceptanceCuts.cxx:104
 AlidNdPtAcceptanceCuts.cxx:105
 AlidNdPtAcceptanceCuts.cxx:106
 AlidNdPtAcceptanceCuts.cxx:107
 AlidNdPtAcceptanceCuts.cxx:108
 AlidNdPtAcceptanceCuts.cxx:109
 AlidNdPtAcceptanceCuts.cxx:110
 AlidNdPtAcceptanceCuts.cxx:111
 AlidNdPtAcceptanceCuts.cxx:112
 AlidNdPtAcceptanceCuts.cxx:113
 AlidNdPtAcceptanceCuts.cxx:114
 AlidNdPtAcceptanceCuts.cxx:115
 AlidNdPtAcceptanceCuts.cxx:116
 AlidNdPtAcceptanceCuts.cxx:117
 AlidNdPtAcceptanceCuts.cxx:118
 AlidNdPtAcceptanceCuts.cxx:119
 AlidNdPtAcceptanceCuts.cxx:120
 AlidNdPtAcceptanceCuts.cxx:121
 AlidNdPtAcceptanceCuts.cxx:122
 AlidNdPtAcceptanceCuts.cxx:123
 AlidNdPtAcceptanceCuts.cxx:124
 AlidNdPtAcceptanceCuts.cxx:125
 AlidNdPtAcceptanceCuts.cxx:126
 AlidNdPtAcceptanceCuts.cxx:127
 AlidNdPtAcceptanceCuts.cxx:128
 AlidNdPtAcceptanceCuts.cxx:129
 AlidNdPtAcceptanceCuts.cxx:130
 AlidNdPtAcceptanceCuts.cxx:131
 AlidNdPtAcceptanceCuts.cxx:132
 AlidNdPtAcceptanceCuts.cxx:133
 AlidNdPtAcceptanceCuts.cxx:134
 AlidNdPtAcceptanceCuts.cxx:135
 AlidNdPtAcceptanceCuts.cxx:136
 AlidNdPtAcceptanceCuts.cxx:137
 AlidNdPtAcceptanceCuts.cxx:138
 AlidNdPtAcceptanceCuts.cxx:139
 AlidNdPtAcceptanceCuts.cxx:140
 AlidNdPtAcceptanceCuts.cxx:141
 AlidNdPtAcceptanceCuts.cxx:142
 AlidNdPtAcceptanceCuts.cxx:143
 AlidNdPtAcceptanceCuts.cxx:144
 AlidNdPtAcceptanceCuts.cxx:145
 AlidNdPtAcceptanceCuts.cxx:146
 AlidNdPtAcceptanceCuts.cxx:147
 AlidNdPtAcceptanceCuts.cxx:148
 AlidNdPtAcceptanceCuts.cxx:149
 AlidNdPtAcceptanceCuts.cxx:150
 AlidNdPtAcceptanceCuts.cxx:151
 AlidNdPtAcceptanceCuts.cxx:152
 AlidNdPtAcceptanceCuts.cxx:153
 AlidNdPtAcceptanceCuts.cxx:154
 AlidNdPtAcceptanceCuts.cxx:155
 AlidNdPtAcceptanceCuts.cxx:156
 AlidNdPtAcceptanceCuts.cxx:157
 AlidNdPtAcceptanceCuts.cxx:158
 AlidNdPtAcceptanceCuts.cxx:159
 AlidNdPtAcceptanceCuts.cxx:160
 AlidNdPtAcceptanceCuts.cxx:161
 AlidNdPtAcceptanceCuts.cxx:162
 AlidNdPtAcceptanceCuts.cxx:163
 AlidNdPtAcceptanceCuts.cxx:164
 AlidNdPtAcceptanceCuts.cxx:165
 AlidNdPtAcceptanceCuts.cxx:166
 AlidNdPtAcceptanceCuts.cxx:167
 AlidNdPtAcceptanceCuts.cxx:168
 AlidNdPtAcceptanceCuts.cxx:169
 AlidNdPtAcceptanceCuts.cxx:170
 AlidNdPtAcceptanceCuts.cxx:171
 AlidNdPtAcceptanceCuts.cxx:172
 AlidNdPtAcceptanceCuts.cxx:173
 AlidNdPtAcceptanceCuts.cxx:174
 AlidNdPtAcceptanceCuts.cxx:175
 AlidNdPtAcceptanceCuts.cxx:176
 AlidNdPtAcceptanceCuts.cxx:177