* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id: AliFiducialCut.cxx 21839 2007-10-29 13:49:42Z gustavo $ */
//_________________________________________________________________________
// Class for track/cluster acceptance selection
#include <TMath.h>
#include <TLorentzVector.h>
#include <TString.h>
-//#include <TArrayF.h>
//---- ANALYSIS system ----
#include "AliFiducialCut.h"
ClassImp(AliFiducialCut)
-//____________________________________________________________________________
+//________________________________
AliFiducialCut::AliFiducialCut() :
- TObject(),
- fEMCALFiducialCut(0), fPHOSFiducialCut(0), fCTSFiducialCut(0),
- fCTSFidCutMinEta(0x0),fCTSFidCutMinPhi(0x0),fCTSFidCutMaxEta(0x0), fCTSFidCutMaxPhi(0x0),
- fEMCALFidCutMinEta(0x0),fEMCALFidCutMinPhi(0x0),fEMCALFidCutMaxEta(0x0), fEMCALFidCutMaxPhi(0x0),
- fPHOSFidCutMinEta(0x0),fPHOSFidCutMinPhi(0x0),fPHOSFidCutMaxEta(0x0), fPHOSFidCutMaxPhi(0x0)
+TObject(),
+fEMCALFiducialCut(0), fPHOSFiducialCut(0), fCTSFiducialCut(0),
+fCTSFidCutMinEta(0x0), fCTSFidCutMinPhi(0x0), fCTSFidCutMaxEta(0x0), fCTSFidCutMaxPhi(0x0),
+fEMCALFidCutMinEta(0x0),fEMCALFidCutMinPhi(0x0),fEMCALFidCutMaxEta(0x0), fEMCALFidCutMaxPhi(0x0),
+fPHOSFidCutMinEta(0x0), fPHOSFidCutMinPhi(0x0), fPHOSFidCutMaxEta(0x0), fPHOSFidCutMaxPhi(0x0)
{
//Ctor
-
+
//Initialize parameters
InitParameters();
-}
-/*
-//____________________________________________________________________________
-AliFiducialCut::AliFiducialCut(const AliFiducialCut & g) :
- TObject(g),
- fEMCALFiducialCut(g.fEMCALFiducialCut), fPHOSFiducialCut(g.fPHOSFiducialCut), fCTSFiducialCut(g. fCTSFiducialCut),
- fCTSFidCutMinEta(g.fCTSFidCutMinEta?new TArrayF(*g.fCTSFidCutMinEta):0x0),
- fCTSFidCutMinPhi(g.fCTSFidCutMinPhi?new TArrayF(*g.fCTSFidCutMinPhi):0x0),
- fCTSFidCutMaxEta(g.fCTSFidCutMaxEta?new TArrayF(*g.fCTSFidCutMaxEta):0x0),
- fCTSFidCutMaxPhi(g.fCTSFidCutMaxPhi?new TArrayF(*g.fCTSFidCutMaxPhi):0x0),
- fEMCALFidCutMinEta(g.fEMCALFidCutMinEta?new TArrayF(*g.fEMCALFidCutMinEta):0x0),
- fEMCALFidCutMinPhi(g.fEMCALFidCutMinPhi?new TArrayF(*g.fEMCALFidCutMinPhi):0x0),
- fEMCALFidCutMaxEta(g.fEMCALFidCutMaxEta?new TArrayF(*g.fEMCALFidCutMaxEta):0x0),
- fEMCALFidCutMaxPhi(g.fEMCALFidCutMaxPhi?new TArrayF(*g.fEMCALFidCutMaxPhi):0x0),
- fPHOSFidCutMinEta(g.fPHOSFidCutMinEta?new TArrayF(*g.fPHOSFidCutMinEta):0x0),
- fPHOSFidCutMinPhi(g.fPHOSFidCutMinPhi?new TArrayF(*g.fPHOSFidCutMinPhi):0x0),
- fPHOSFidCutMaxEta(g.fPHOSFidCutMaxEta?new TArrayF(*g.fPHOSFidCutMaxEta):0x0),
- fPHOSFidCutMaxPhi(g.fPHOSFidCutMaxPhi?new TArrayF(*g.fPHOSFidCutMaxPhi):0x0)
-
-{
- // cpy ctor
-
+
}
-//_________________________________________________________________________
-AliFiducialCut & AliFiducialCut::operator = (const AliFiducialCut & source)
+//_______________________________
+AliFiducialCut::~AliFiducialCut()
{
- // assignment operator
-
- if(&source == this) return *this;
-
- fEMCALFiducialCut = source.fEMCALFiducialCut;
- fPHOSFiducialCut = source.fPHOSFiducialCut;
- fCTSFiducialCut = source.fCTSFiducialCut;
-
- fCTSFidCutMinEta = source.fCTSFidCutMinEta?new TArrayF(*source.fCTSFidCutMinEta):0x0;
- fCTSFidCutMinPhi = source.fCTSFidCutMinPhi?new TArrayF(*source.fCTSFidCutMinPhi):0x0;
- fCTSFidCutMaxEta = source.fCTSFidCutMaxEta?new TArrayF(*source.fCTSFidCutMaxEta):0x0;
- fCTSFidCutMaxPhi = source.fCTSFidCutMaxPhi?new TArrayF(*source.fCTSFidCutMaxPhi):0x0;
- fEMCALFidCutMinEta = source.fEMCALFidCutMinEta?new TArrayF(*source.fEMCALFidCutMinEta):0x0;
- fEMCALFidCutMinPhi = source.fEMCALFidCutMinPhi?new TArrayF(*source.fEMCALFidCutMinPhi):0x0;
- fEMCALFidCutMaxEta = source.fEMCALFidCutMaxEta?new TArrayF(*source.fEMCALFidCutMaxEta):0x0;
- fEMCALFidCutMaxPhi = source.fEMCALFidCutMaxPhi?new TArrayF(*source.fEMCALFidCutMaxPhi):0x0;
- fPHOSFidCutMinEta = source.fPHOSFidCutMinEta?new TArrayF(*source.fPHOSFidCutMinEta):0x0;
- fPHOSFidCutMinPhi = source.fPHOSFidCutMinPhi?new TArrayF(*source.fPHOSFidCutMinPhi):0x0;
- fPHOSFidCutMaxEta = source.fPHOSFidCutMaxEta?new TArrayF(*source.fPHOSFidCutMaxEta):0x0;
- fPHOSFidCutMaxPhi = source.fPHOSFidCutMaxPhi?new TArrayF(*source.fPHOSFidCutMaxPhi):0x0;
-
- return *this;
-
-}
-*/
-//_________________________________
-AliFiducialCut::~AliFiducialCut() {
//Dtor
-
- if(fCTSFidCutMinEta)delete fCTSFidCutMinEta ;
- if(fCTSFidCutMinPhi)delete fCTSFidCutMinPhi ;
- if(fCTSFidCutMaxEta)delete fCTSFidCutMaxEta ;
- if(fCTSFidCutMaxPhi)delete fCTSFidCutMaxPhi ;
-
- if(fEMCALFidCutMinEta)delete fEMCALFidCutMinEta ;
- if(fEMCALFidCutMinPhi)delete fEMCALFidCutMinPhi ;
- if(fEMCALFidCutMaxEta)delete fEMCALFidCutMaxEta ;
- if(fEMCALFidCutMaxPhi)delete fEMCALFidCutMaxPhi ;
-
- if(fPHOSFidCutMinEta)delete fPHOSFidCutMinEta ;
- if(fPHOSFidCutMinPhi)delete fPHOSFidCutMinPhi ;
- if(fPHOSFidCutMaxEta)delete fPHOSFidCutMaxEta ;
- if(fPHOSFidCutMaxPhi)delete fPHOSFidCutMaxPhi ;
-
+
+ if(fCTSFidCutMinEta) delete fCTSFidCutMinEta ;
+ if(fCTSFidCutMinPhi) delete fCTSFidCutMinPhi ;
+ if(fCTSFidCutMaxEta) delete fCTSFidCutMaxEta ;
+ if(fCTSFidCutMaxPhi) delete fCTSFidCutMaxPhi ;
+
+ if(fEMCALFidCutMinEta) delete fEMCALFidCutMinEta ;
+ if(fEMCALFidCutMinPhi) delete fEMCALFidCutMinPhi ;
+ if(fEMCALFidCutMaxEta) delete fEMCALFidCutMaxEta ;
+ if(fEMCALFidCutMaxPhi) delete fEMCALFidCutMaxPhi ;
+
+ if(fPHOSFidCutMinEta) delete fPHOSFidCutMinEta ;
+ if(fPHOSFidCutMinPhi) delete fPHOSFidCutMinPhi ;
+ if(fPHOSFidCutMaxEta) delete fPHOSFidCutMaxEta ;
+ if(fPHOSFidCutMaxPhi) delete fPHOSFidCutMaxPhi ;
+
}
-//_______________________________________________________________
-Bool_t AliFiducialCut::IsInFiducialCut(const TLorentzVector momentum, const TString det) const
+//___________________________________________________________________
+Bool_t AliFiducialCut::IsInFiducialCut(const TLorentzVector momentum,
+ const TString det) const
{
//Selects EMCAL or PHOS cluster or CTS track if it is inside eta-phi defined regions
-
- if(det == "CTS"){
- if(!fCTSFiducialCut) return kTRUE; //Fiducial cut not requested, accept all tracks
- else return CheckFiducialRegion(momentum, fCTSFidCutMinPhi , fCTSFidCutMaxPhi , fCTSFidCutMinEta , fCTSFidCutMaxEta );
+
+ if(det == "CTS")
+ {
+ if(!fCTSFiducialCut)
+ return kTRUE; //Fiducial cut not requested, accept all tracks
+ else
+ return CheckFiducialRegion(momentum, fCTSFidCutMinPhi , fCTSFidCutMaxPhi , fCTSFidCutMinEta , fCTSFidCutMaxEta );
}
- else if(det == "EMCAL") {
- if(!fEMCALFiducialCut) return kTRUE; //Fiducial cut not requested, accept all clusters
- else return CheckFiducialRegion(momentum, fEMCALFidCutMinPhi, fEMCALFidCutMaxPhi, fEMCALFidCutMinEta, fEMCALFidCutMaxEta);
+ else if(det == "EMCAL")
+ {
+ if(!fEMCALFiducialCut)
+ return kTRUE; //Fiducial cut not requested, accept all clusters
+ else
+ return CheckFiducialRegion(momentum, fEMCALFidCutMinPhi, fEMCALFidCutMaxPhi, fEMCALFidCutMinEta, fEMCALFidCutMaxEta);
}
- else if(det == "PHOS") {
- if(!fPHOSFiducialCut) return kTRUE; //Fiducial cut not requested, accept all clusters
- else return CheckFiducialRegion(momentum, fPHOSFidCutMinPhi , fPHOSFidCutMaxPhi , fPHOSFidCutMinEta , fPHOSFidCutMaxEta );
+ else if(det == "PHOS")
+ {
+ if(!fPHOSFiducialCut)
+ return kTRUE; //Fiducial cut not requested, accept all clusters
+ else
+ return CheckFiducialRegion(momentum, fPHOSFidCutMinPhi , fPHOSFidCutMaxPhi , fPHOSFidCutMinEta , fPHOSFidCutMaxEta );
}
- else{
+ else
+ {
printf("AliFiducialCut::IsInFiducialCut() - Wrong detector name = %s\n", det.Data());
return kFALSE;
}
-
+
}
-//_______________________________________________________________
-Bool_t AliFiducialCut::CheckFiducialRegion(const TLorentzVector momentum, const TArrayF* minphi, const TArrayF* maxphi, const TArrayF* mineta, const TArrayF* maxeta) const {
+//___________________________________________________________________________________________
+Bool_t AliFiducialCut::CheckFiducialRegion(const TLorentzVector momentum,
+ const TArrayF* minphi, const TArrayF* maxphi,
+ const TArrayF* mineta, const TArrayF* maxeta) const
+{
//Given the selection regions in Eta and Phi, check if particle is in this region.
-
- Double_t phi = momentum.Phi();
+
+ Double_t phi = momentum.Phi();
if(phi < 0) phi+=TMath::TwoPi() ;
Double_t eta = momentum.Eta();
//printf("IsInFiducialCut::Det: %s, phi = %f, eta = %f\n", det.Data(),phi*TMath::RadToDeg(), eta);
-
- Int_t netaregions = maxeta->GetSize();
- Int_t nphiregions = maxphi->GetSize();
- if(netaregions != mineta->GetSize() || nphiregions != minphi->GetSize())
+
+ Int_t netaregions = maxeta->GetSize();
+ Int_t nphiregions = maxphi->GetSize();
+ if(netaregions != mineta->GetSize() || nphiregions != minphi->GetSize())
printf("AliFiducialCut::IsInFiducialCut() - Wrong number of fiducial cut regions: nmaxeta %d != nmineta %d; nmaxphi %d != nminphi %d\n",
- netaregions, mineta->GetSize(), nphiregions, minphi->GetSize());
+ netaregions, mineta->GetSize(), nphiregions, minphi->GetSize());
//Eta fiducial cut
Bool_t bInEtaFidCut = kFALSE;
for(Int_t ieta = 0; ieta < netaregions; ieta++)
if(eta > mineta->GetAt(ieta) && eta < maxeta->GetAt(ieta)) bInEtaFidCut = kTRUE;
-
+
if(bInEtaFidCut){
//printf("Eta cut passed\n");
//Phi fiducial cut
//_______________________________________________________________
void AliFiducialCut::InitParameters()
{
-
+
//Initialize the parameters of the analysis.
-
+
fEMCALFiducialCut = kTRUE ;
- fPHOSFiducialCut = kTRUE ;
- fCTSFiducialCut = kTRUE ;
-
+ fPHOSFiducialCut = kTRUE ;
+ fCTSFiducialCut = kTRUE ;
+
fCTSFidCutMinEta = new TArrayF(1);
fCTSFidCutMinEta->SetAt(-0.9,0);
fCTSFidCutMaxEta = new TArrayF(1);
- fCTSFidCutMaxEta->SetAt(0.9,0);
-
+ fCTSFidCutMaxEta->SetAt( 0.9,0);
+
fCTSFidCutMinPhi = new TArrayF(1);
- fCTSFidCutMinPhi->SetAt(0,0);
+ fCTSFidCutMinPhi->SetAt(0. ,0);
fCTSFidCutMaxPhi = new TArrayF(1);
fCTSFidCutMaxPhi->SetAt(360.,0);
-
+
fEMCALFidCutMinEta = new TArrayF(1);
fEMCALFidCutMinEta->SetAt(-0.7,0);
fEMCALFidCutMaxEta = new TArrayF(1);
- fEMCALFidCutMaxEta->SetAt(0.7,0);
-
+ fEMCALFidCutMaxEta->SetAt( 0.7,0);
+
fEMCALFidCutMinPhi = new TArrayF(1);
fEMCALFidCutMinPhi->SetAt(80.,0);
fEMCALFidCutMaxPhi = new TArrayF(1);
- fEMCALFidCutMaxPhi->SetAt(190.,0);
-
+ fEMCALFidCutMaxPhi->SetAt(187.,0);
+
fPHOSFidCutMinEta = new TArrayF(1);
fPHOSFidCutMinEta->SetAt(-0.13,0);
fPHOSFidCutMaxEta = new TArrayF(1);
- fPHOSFidCutMaxEta->SetAt(0.13,0);
-
+ fPHOSFidCutMaxEta->SetAt( 0.13,0);
+
fPHOSFidCutMinPhi = new TArrayF(1);
- fPHOSFidCutMinPhi->SetAt(220.,0);
+ fPHOSFidCutMinPhi->SetAt(260.,0);
fPHOSFidCutMaxPhi = new TArrayF(1);
fPHOSFidCutMaxPhi->SetAt(320.,0);
-
+
}
//________________________________________________________________
void AliFiducialCut::Print(const Option_t * opt) const
{
-
+
//Print some relevant parameters set for the analysis
if(! opt)
return;
-
+
printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
-
- if(fCTSFiducialCut){
+
+ if(fCTSFiducialCut)
+ {
Int_t netaregions = fCTSFidCutMaxEta->GetSize();
Int_t nphiregions = fCTSFidCutMaxPhi->GetSize();
printf(">> CTS Fiducial regions : phi %d eta %d\n", netaregions, nphiregions) ;
printf(" region %d : %3.1f < phi < %3.1f\n", iphi, fCTSFidCutMinPhi->GetAt(iphi), fCTSFidCutMaxPhi->GetAt(iphi)) ;
}
else printf(">>No fiducial cuts in CTS\n");
-
- if(fEMCALFiducialCut){
+
+ if(fEMCALFiducialCut)
+ {
Int_t netaregions = fEMCALFidCutMaxEta->GetSize();
Int_t nphiregions = fEMCALFidCutMaxPhi->GetSize();
printf(">>EMCAL Fiducial regions : phi %d eta %d\n", netaregions, nphiregions) ;
printf(" region %d : %3.1f < phi < %3.1f\n", iphi, fEMCALFidCutMinPhi->GetAt(iphi), fEMCALFidCutMaxPhi->GetAt(iphi)) ;
}
else printf(">>No fiducial cuts in EMCAL\n");
-
- if(fPHOSFiducialCut){
+
+ if(fPHOSFiducialCut)
+ {
Int_t netaregions = fPHOSFidCutMaxEta->GetSize();
Int_t nphiregions = fPHOSFidCutMaxPhi->GetSize();
printf(">>PHOS Fiducial regions : phi %d eta %d\n", netaregions, nphiregions) ;
}
else printf(">>No fiducial cuts in PHOS\n");
printf(" \n") ;
+
}
-
//_______________________________________________________________
-void AliFiducialCut::SetSimpleCTSFiducialCut(const Float_t eta, const Float_t minphi, const Float_t maxphi){
-
+void AliFiducialCut::SetSimpleCTSFiducialCut(const Float_t eta,
+ const Float_t minphi,
+ const Float_t maxphi)
+{
+
//Method to set simple acceptance cut to CTS
+
fCTSFidCutMinEta->Set(1);
fCTSFidCutMaxEta->Set(1);
fCTSFidCutMinPhi->Set(1);
fCTSFidCutMaxPhi->Set(1);
-
+
fCTSFidCutMinEta->SetAt(-eta,0);
- fCTSFidCutMaxEta->SetAt(eta,0);
+ fCTSFidCutMaxEta->SetAt( eta,0);
fCTSFidCutMinPhi->SetAt(minphi,0);
fCTSFidCutMaxPhi->SetAt(maxphi,0);
-
-
+
}
-
-//_______________________________________________________________
-void AliFiducialCut::SetSimpleEMCALFiducialCut(const Float_t eta, const Float_t minphi, const Float_t maxphi){
+//__________________________________________________________________
+void AliFiducialCut::SetSimpleEMCALFiducialCut(const Float_t eta,
+ const Float_t minphi,
+ const Float_t maxphi)
+{
//Method to set simple acceptance cut to EMCAL
-
+
fEMCALFidCutMinEta->Set(1);
fEMCALFidCutMaxEta->Set(1);
fEMCALFidCutMinPhi->Set(1);
fEMCALFidCutMaxPhi->Set(1);
-
+
fEMCALFidCutMinEta->SetAt(-eta,0);
- fEMCALFidCutMaxEta->SetAt(eta,0);
+ fEMCALFidCutMaxEta->SetAt( eta,0);
fEMCALFidCutMinPhi->SetAt(minphi,0);
fEMCALFidCutMaxPhi->SetAt(maxphi,0);
-
-
+
+
}
-//_______________________________________________________________
-void AliFiducialCut::SetSimplePHOSFiducialCut(const Float_t eta, const Float_t minphi, const Float_t maxphi){
-
+//_________________________________________________________________
+void AliFiducialCut::SetSimplePHOSFiducialCut(const Float_t eta,
+ const Float_t minphi,
+ const Float_t maxphi)
+{
//Method to set simple acceptance cut to PHOS
+
fPHOSFidCutMinEta->Set(1);
fPHOSFidCutMaxEta->Set(1);
fPHOSFidCutMinPhi->Set(1);
fPHOSFidCutMaxPhi->Set(1);
-
+
fPHOSFidCutMinEta->SetAt(-eta,0);
fPHOSFidCutMaxEta->SetAt(eta,0);
fPHOSFidCutMinPhi->SetAt(minphi,0);
fPHOSFidCutMaxPhi->SetAt(maxphi,0);
-
-
+
}