+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetSample::CheckClusTrackMatching()
+{
+
+ if(!fTracksCont || !fCaloClustersCont)
+ return;
+
+ Double_t deta = 999;
+ Double_t dphi = 999;
+
+ //Get closest cluster to track
+ AliVTrack *track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle(0));
+ while(track) {
+ //Get matched cluster
+ Int_t emc1 = track->GetEMCALcluster();
+ if(fCaloClustersCont && emc1>=0) {
+ AliVCluster *clusMatch = fCaloClustersCont->GetCluster(emc1);
+ if(clusMatch) {
+ AliPicoTrack::GetEtaPhiDiff(track, clusMatch, dphi, deta);
+ fHistPtDEtaDPhiTrackClus->Fill(track->Pt(),deta,dphi);
+ }
+ }
+ track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle());
+ }
+
+ //Get closest track to cluster
+ AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0);
+ while(cluster) {
+ TLorentzVector nPart;
+ cluster->GetMomentum(nPart, fVertex);
+ fHistClustersPt[fCentBin]->Fill(nPart.Pt());
+
+ //Get matched track
+ AliVTrack *mt = NULL;
+ AliAODCaloCluster *acl = dynamic_cast<AliAODCaloCluster*>(cluster);
+ if(acl) {
+ if(acl->GetNTracksMatched()>1)
+ mt = static_cast<AliVTrack*>(acl->GetTrackMatched(0));
+ }
+ else {
+ AliESDCaloCluster *ecl = dynamic_cast<AliESDCaloCluster*>(cluster);
+ Int_t im = ecl->GetTrackMatchedIndex();
+ if(fTracksCont && im>=0) {
+ mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im));
+ }
+ }
+ if(mt) {
+ AliPicoTrack::GetEtaPhiDiff(mt, cluster, dphi, deta);
+ fHistPtDEtaDPhiClusTrack->Fill(nPart.Pt(),deta,dphi);
+
+ /* //debugging
+ if(mt->IsEMCAL()) {
+ Int_t emc1 = mt->GetEMCALcluster();
+ Printf("current id: %d emc1: %d",fCaloClustersCont->GetCurrentID(),emc1);
+ AliVCluster *clm = fCaloClustersCont->GetCluster(emc1);
+ AliPicoTrack::GetEtaPhiDiff(mt, clm, dphi, deta);
+ Printf("deta: %f dphi: %f",deta,dphi);
+ }
+ */
+ }
+ cluster = fCaloClustersCont->GetNextAcceptCluster();
+ }
+}
+
+//________________________________________________________________________
+void AliAnalysisTaskEmcalJetSample::ExecOnce() {
+
+ AliAnalysisTaskEmcalJet::ExecOnce();
+
+ if (fJetsCont && fJetsCont->GetArray() == 0) fJetsCont = 0;
+ if (fTracksCont && fTracksCont->GetArray() == 0) fTracksCont = 0;
+ if (fCaloClustersCont && fCaloClustersCont->GetArray() == 0) fCaloClustersCont = 0;
+
+}
+