16 #include <AliVCluster.h> 17 #include <AliVParticle.h> 20 #include "AliPIDResponse.h" 21 #include "AliInputEventHandler.h" 23 #include "AliEMCALRecoUtils.h" 24 #include "AliEMCALGeometry.h" 25 #include "AliExternalTrackParam.h" 34 fEMCALRecoUtils(NULL),
46 fEMCALRecoUtils(NULL),
54 DefineOutput(2, TTree::Class());
73 TString name_tree(
"electron_information");
94 AliError(
"No Cluster Container Available\n");
102 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
112 const AliVTrack* track =
static_cast<const AliVTrack*
>(
part);
119 if (n_sigma_electron_TPC < -1.5 || n_sigma_electron_TPC > 3.5)
122 Int_t iCluster = track->GetEMCALcluster();
132 Double_t EoverP = cluster->GetNonLinCorrEnergy()/track->P();
135 if (EoverP<0.7 || EoverP>1.3)
140 cluster->GetPosition(emcx);
141 TVector3 clustpos(emcx[0],emcx[1],emcx[2]);
145 if(emcphi < 0) emcphi = emcphi+(2*TMath::Pi());
157 TVector3 trackposOnEMCAL;
158 trackposOnEMCAL.SetPtEtaPhi(440,track->GetTrackEtaOnEMCal(),track->GetTrackPhiOnEMCal());
160 Float_t xdiff = trackposOnEMCAL.X() - clustpos.X();
161 Float_t ydiff = trackposOnEMCAL.Y() - clustpos.Y();
162 Float_t zdiff = trackposOnEMCAL.Z() - clustpos.Z();
166 Double_t xyz[3] = {0}, pxpypz[3] = {0}, cv[21] = {0};
167 track->PxPyPz(pxpypz);
169 track->GetCovarianceXYZPxPyPz(cv);
170 AliExternalTrackParam trackParam = AliExternalTrackParam(xyz,pxpypz,cv,track->Charge());
172 Double_t trackPosExt[3] = {0.,0.,0.};
173 Double_t ElectronMass = 0.000510998910;
174 Float_t EtaResidualsForCrossCheck, PhiResidualsForCrossCheck;
176 fEMCALRecoUtils->ExtrapolateTrackToPosition(&trackParam, emcx, ElectronMass,
fEMCALRecoUtils->GetStep(), EtaResidualsForCrossCheck,PhiResidualsForCrossCheck);
177 trackParam.GetXYZ(trackPosExt);
179 TVector3 trackposOnEMCALRU;
181 trackposOnEMCALRU.SetXYZ(trackPosExt[0],trackPosExt[1],trackPosExt[2]);
183 Double_t phidiffRU = TVector2::Phi_mpi_pi(trackposOnEMCALRU.Phi()-emcphi);
184 Double_t etadiffRU = trackposOnEMCALRU.Eta() - emceta;
185 Double_t xdiffRU = trackposOnEMCALRU.X() - clustpos.X();
186 Double_t ydiffRU = trackposOnEMCALRU.Y() - clustpos.Y();
187 Double_t zdiffRU = trackposOnEMCALRU.Z() - clustpos.Z();
237 fEMCALGeo = AliEMCALGeometry::GetInstance();
ElectronForAlignment fElectronInformation
PID response task used to perform electron identification.
AliPIDResponse * fPIDResponse
EMCAL geometry class.
Base task in the EMCAL framework.
void Terminate(Option_t *option)
AliAnalysisTaskEMCALAlig()
Float_t n_sigma_electron_TPC
UShort_t super_module_number
TTree * fElectronTree
Object to hold the electron information.
TString part
use mixed event to constrain combinatorial background
Container for particles within the EMCAL framework.
TObjArray fParticleCollArray
particle/track collection array
void ExecOnce()
Perform steps needed to initialize the analysis.
void UserCreateOutputObjects()
TString fTreeSuffix
Electron tree output.
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
AliVCluster * GetAcceptCluster(Int_t i) const
AliVCaloCells * fCaloCells
!cells
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
Bool_t FillHistograms()
Function filling histograms.
void SetMakeGeneralHistograms(Bool_t g)
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
const AliParticleIterableContainer accepted() const
AliEMCALGeometry * fEMCALGeo
EMCAL Reco utils used to recalculate the matching.
AliEMCALRecoUtils * fEMCALRecoUtils
void UserCreateOutputObjects()
Main initialization function on the worker.
Container structure for EMCAL clusters.
virtual ~AliAnalysisTaskEMCALAlig()