ROOT logo
#ifndef ALIFIDUCIALCUT_H
#define ALIFIDUCIALCUT_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//_________________________________________________________________________
// Class for track/cluster acceptance selection
// Selection in Central barrel, DCAL and PHOS
//  
// Several selection regions possible for the different
// detectors
//
//*-- Author: Gustavo Conesa (INFN-LNF)

// --- ROOT system ---
#include <TObject.h> 
#include <TArrayF.h> 

class TString ;
//class TLorentzVector ;


class AliFiducialCut : public TObject {
  
public: 
  AliFiducialCut() ; // ctor
  virtual  ~AliFiducialCut() ;//virtual dtor
  
  void      InitParameters();

  Bool_t    CheckFiducialRegion(Float_t eta, Float_t phi,
                                const TArrayF* minphi, const TArrayF* maxphi,
                                const TArrayF* mineta, const TArrayF* maxeta) const ;

  //Bool_t    IsInFiducialCut    (TLorentzVector lv, TString det) const ;
  Bool_t    IsInFiducialCut    (Float_t eta, Float_t phi, Int_t det) const ;
  
  void      DoCTSFiducialCut  (Bool_t b)     { fCTSFiducialCut   = b    ; }
  void      DoEMCALFiducialCut(Bool_t b)     { fEMCALFiducialCut = b    ; }
  void      DoPHOSFiducialCut (Bool_t b)     { fPHOSFiducialCut  = b    ; }
  void      DoDCALFiducialCut (Bool_t b)     { fDCALFiducialCut  = b    ; }
  
  Bool_t    GetCTSFiducialCutStatus()  const { return fCTSFiducialCut   ; }
  Bool_t    GetEMCALFiducialCut()      const { return fEMCALFiducialCut ; }
  Bool_t    GetPHOSFiducialCutStatus() const { return fPHOSFiducialCut  ; }
  Bool_t    GetDCALFiducialCut()       const { return fDCALFiducialCut  ; }

  void      SetSimpleCTSFiducialCut  (Float_t abseta, Float_t phimin, Float_t phimax) ;
  void      SetSimpleEMCALFiducialCut(Float_t abseta, Float_t phimin, Float_t phimax) ;
  void      SetSimplePHOSFiducialCut (Float_t abseta, Float_t phimin, Float_t phimax) ;
  void      SetSimpleDCALFiducialCut (Float_t abseta, Float_t phimin, Float_t phimax) ;
  
  void      Print(const Option_t * opt)const;
  
  void      AddCTSFidCutMaxEtaArray(Int_t size, Float_t* array)  
                                              { fCTSFidCutMaxEta->Set(size,array)   ; } 
  TArrayF * GetCTSFidCutMaxEtaArray() const   { return fCTSFidCutMaxEta             ; }
  
  void      AddCTSFidCutMaxPhiArray(Int_t size, Float_t* array)  
                                              { fCTSFidCutMaxPhi->Set(size,array)   ; }
  TArrayF * GetCTSFidCutMaxPhiArray() const   { return fCTSFidCutMaxPhi             ; }
  
  void      AddCTSFidCutMinEtaArray(Int_t size, Float_t* array)  
                                              { fCTSFidCutMinEta->Set(size,array)   ; } 
  TArrayF * GetCTSFidCutMinEtaArray() const   { return fCTSFidCutMinEta             ; }
  
  void      AddCTSFidCutMinPhiArray(Int_t size, Float_t* array)  
                                              { fCTSFidCutMinPhi->Set(size,array)   ; }
  TArrayF * GetCTSFidCutMinPhiArray() const   { return fCTSFidCutMinPhi             ; }
  
  void      AddEMCALFidCutMaxEtaArray(Int_t size, Float_t* array)  
                                              { fEMCALFidCutMaxEta->Set(size,array) ; } 
  TArrayF * GetEMCALFidCutMaxEtaArray() const { return fEMCALFidCutMaxEta           ; }
  
  void      AddEMCALFidCutMaxPhiArray(Int_t size, Float_t* array)  
                                              { fEMCALFidCutMaxPhi->Set(size,array) ; }
  TArrayF * GetEMCALFidCutMaxPhiArray() const { return fEMCALFidCutMaxPhi           ; }
  
  void      AddEMCALFidCutMinEtaArray(Int_t size, Float_t* array)  
                                              { fEMCALFidCutMinEta->Set(size,array) ; } 
  TArrayF * GetEMCALFidCutMinEtaArray() const { return fEMCALFidCutMinEta           ; }
  
  void      AddEMCALFidCutMinPhiArray(Int_t size, Float_t* array)  
                                              { fEMCALFidCutMinPhi->Set(size,array) ; }
  TArrayF * GetEMCALFidCutMinPhiArray() const { return fEMCALFidCutMinPhi           ; }
  
  void      AddPHOSFidCutMaxEtaArray(Int_t size, Float_t* array)  
                                              { fPHOSFidCutMaxEta->Set(size,array)  ; } 
  TArrayF * GetPHOSFidCutMaxEtaArray() const  { return fPHOSFidCutMaxEta            ; }
  
  void      AddPHOSFidCutMaxPhiArray(Int_t size, Float_t* array)  
                                              { fPHOSFidCutMaxPhi->Set(size,array)  ; }
  TArrayF * GetPHOSFidCutMaxPhiArray() const  { return fPHOSFidCutMaxPhi            ; }
  
  void      AddPHOSFidCutMinEtaArray(Int_t size, Float_t* array)  
                                              { fPHOSFidCutMinEta->Set(size,array)  ; } 
  TArrayF * GetPHOSFidCutMinEtaArray() const  { return fPHOSFidCutMinEta            ; }

  void      AddPHOSFidCutMinPhiArray(Int_t size, Float_t* array)  
                                              { fPHOSFidCutMinPhi->Set(size,array)  ; }
  TArrayF * GetPHOSFidCutMinPhiArray() const  { return fPHOSFidCutMinPhi            ; }
  
  void      AddDCALFidCutMaxEtaArray(Int_t size, Float_t* array)
  { fDCALFidCutMaxEta->Set(size,array) ; }
  TArrayF * GetDCALFidCutMaxEtaArray() const { return fDCALFidCutMaxEta           ; }
  
  void      AddDCALFidCutMaxPhiArray(Int_t size, Float_t* array)
  { fDCALFidCutMaxPhi->Set(size,array) ; }
  TArrayF * GetDCALFidCutMaxPhiArray() const { return fDCALFidCutMaxPhi           ; }
  
  void      AddDCALFidCutMinEtaArray(Int_t size, Float_t* array)
  { fDCALFidCutMinEta->Set(size,array) ; }
  TArrayF * GetDCALFidCutMinEtaArray() const { return fDCALFidCutMinEta           ; }
  
  void      AddDCALFidCutMinPhiArray(Int_t size, Float_t* array)
  { fDCALFidCutMinPhi->Set(size,array) ; }
  TArrayF * GetDCALFidCutMinPhiArray() const { return fDCALFidCutMinPhi           ; }

  enum detector {kEMCAL = 0, kPHOS = 1, kCTS = 2, kDCAL = 3, kDCALPHOS = 4 };
  
private:
  
  //Detector acceptance cuts
  Bool_t    fEMCALFiducialCut ;  // Apply fiducial cuts to EMCAL clusters
  Bool_t    fDCALFiducialCut  ;  // Apply fiducial cuts to DCAL clusters
  Bool_t    fPHOSFiducialCut  ;  // Apply fiducial cuts to PHOS clusters
  Bool_t    fCTSFiducialCut   ;  // Apply fiducial cuts to  CTS tracks
  
  TArrayF * fCTSFidCutMinEta ;   // Take particles in CTS with eta > fCTSFidCutMinEta
  TArrayF * fCTSFidCutMinPhi ;   // Take particles in CTS with phi > fCTSFidCutMinPhi
  TArrayF * fCTSFidCutMaxEta ;   // Take particles in CTS with eta < fCTSFidCutMaxEta
  TArrayF * fCTSFidCutMaxPhi ;   // Take particles in CTS with phi > fCTSFidCutMaxPhi
  
  TArrayF * fEMCALFidCutMinEta ; // Take particles in EMCAL with eta > fEMCALFidCutMinEta
  TArrayF * fEMCALFidCutMinPhi ; // Take particles in EMCAL with phi > fEMCALFidCutMinPhi
  TArrayF * fEMCALFidCutMaxEta ; // Take particles in EMCAL with eta < fEMCALFidCutMaxEta
  TArrayF * fEMCALFidCutMaxPhi ; // Take particles in EMCAL with phi > fEMCALFidCutMaxPhi
  
  TArrayF * fPHOSFidCutMinEta ;  // Take particles in PHOS with eta > fPHOSFidCutMinEta
  TArrayF * fPHOSFidCutMinPhi ;  // Take particles in PHOS with phi > fPHOSFidCutMinPhi
  TArrayF * fPHOSFidCutMaxEta ;  // Take particles in PHOS with eta < fPHOSFidCutMaxEta
  TArrayF * fPHOSFidCutMaxPhi ;  // Take particles in PHOS with phi > fPHOSFidCutMaxPhi
  
  TArrayF * fDCALFidCutMinEta ; // Take particles in DCAL with eta > fDCALFidCutMinEta
  TArrayF * fDCALFidCutMinPhi ; // Take particles in DCAL with phi > fDCALFidCutMinPhi
  TArrayF * fDCALFidCutMaxEta ; // Take particles in DCAL with eta < fDCALFidCutMaxEta
  TArrayF * fDCALFidCutMaxPhi ; // Take particles in DCAL with phi > fDCALFidCutMaxPhi
  
  AliFiducialCut(              const AliFiducialCut & g) ; // cpy ctor
  AliFiducialCut & operator = (const AliFiducialCut & g) ; // cpy assignment
  
  ClassDef(AliFiducialCut,2)
  
} ;


#endif //ALIFIDUCIALCUT_H



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