ROOT logo
// $Id$
//
// Track/cluster matcher
// 
// Author: C.Loizides, S.Aiola

#include "AliEmcalClusTrackMatcherTask.h"

#include <TClonesArray.h>

#include "AliAODCaloCluster.h"
#include "AliESDCaloCluster.h"
#include "AliEmcalParticle.h"
#include "AliLog.h"
#include "AliParticleContainer.h"
#include "AliPicoTrack.h"
#include "AliVCluster.h"
#include "AliVTrack.h"

ClassImp(AliEmcalClusTrackMatcherTask)

//________________________________________________________________________
AliEmcalClusTrackMatcherTask::AliEmcalClusTrackMatcherTask() : 
  AliAnalysisTaskEmcal("AliEmcalClusTrackMatcherTask",kFALSE),
  fMaxDistance(0.1),
  fModifyObjs(kFALSE),
  fOrigTracks(0),
  fOrigClus(0),
  fHistMatchEtaAll(0),
  fHistMatchPhiAll(0)
{
  // Constructor.

  for(Int_t icent=0; icent<8; ++icent) {
    for(Int_t ipt=0; ipt<9; ++ipt) {
      for(Int_t ieta=0; ieta<2; ++ieta) {
	fHistMatchEta[icent][ipt][ieta] = 0;
	fHistMatchPhi[icent][ipt][ieta] = 0;
      }
    }
  }
}

//________________________________________________________________________
AliEmcalClusTrackMatcherTask::AliEmcalClusTrackMatcherTask(const char *name, Bool_t histo) : 
  AliAnalysisTaskEmcal(name,histo),
  fMaxDistance(0.1),
  fModifyObjs(kFALSE),
  fOrigTracks(0),
  fOrigClus(0),
  fHistMatchEtaAll(0),
  fHistMatchPhiAll(0)
{
  // Standard constructor.

  for(Int_t icent=0; icent<8; ++icent) {
    for(Int_t ipt=0; ipt<9; ++ipt) {
      for(Int_t ieta=0; ieta<2; ++ieta) {
	fHistMatchEta[icent][ipt][ieta] = 0;
	fHistMatchPhi[icent][ipt][ieta] = 0;
      }
    }
  }
}

//________________________________________________________________________
AliEmcalClusTrackMatcherTask::~AliEmcalClusTrackMatcherTask()
{
  // Destructor.
}

//________________________________________________________________________
void AliEmcalClusTrackMatcherTask::ExecOnce()
{
  // Initialize the analysis.

  if (fParticleCollArray.GetEntriesFast()<2) {
    AliError(Form("Wrong number of particle collections (%d), required 2",fParticleCollArray.GetEntriesFast()));
    return;
  }

  for (Int_t i = 0; i < 2; i++) {
    AliParticleContainer *cont = static_cast<AliParticleContainer*>(fParticleCollArray.At(i));
    cont->SetClassName("AliEmcalParticle");
    // make sure objects are not double matched
    TClonesArray *dummy = new TClonesArray("TObject",0);
    dummy->SetName(Form("%s_matched", cont->GetArrayName().Data()));
    AddObjectToEvent(dummy);
    // get pointer to original collections
    TString tmp(cont->GetArrayName());
    TObjArray *arr = tmp.Tokenize("_");
    if (arr) {
      const Int_t aid = arr->GetEntries()-1;
      if (aid>0) {
	TString tname(arr->At(aid)->GetName());
	TClonesArray *oarr =  dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(tname));
	if (oarr && (i==0)) {
	  AliInfo(Form("Setting orig tracks to %s", tname.Data()));
	  fOrigTracks = oarr;
	} else if (oarr && (i==1)) {
	  AliInfo(Form("Setting orig clusters to %s", tname.Data()));
	  fOrigClus = oarr;
	}
      }
    }
    delete arr;
  }

  AliAnalysisTaskEmcal::ExecOnce();
}

//________________________________________________________________________
void AliEmcalClusTrackMatcherTask::UserCreateOutputObjects()
{
  // Create my user objects.

  if (!fCreateHisto)
    return;

  AliAnalysisTaskEmcal::UserCreateOutputObjects();

  const Int_t nCentChBins = fNcentBins * 2;

  fHistMatchEtaAll = new TH1F("fHistMatchEtaAll", "fHistMatchEtaAll", 400, -0.2, 0.2);
  fHistMatchPhiAll = new TH1F("fHistMatchPhiAll", "fHistMatchPhiAll", 400, -0.2, 0.2);
  fOutput->Add(fHistMatchEtaAll);
  fOutput->Add(fHistMatchPhiAll);

  for(Int_t icent=0; icent<nCentChBins; ++icent) {
    for(Int_t ipt=0; ipt<9; ++ipt) {
      for(Int_t ieta=0; ieta<2; ++ieta) {
	TString nameEta(Form("fHistMatchEta_%i_%i_%i",icent,ipt,ieta));
	fHistMatchEta[icent][ipt][ieta] = new TH1F(nameEta, nameEta, 400, -0.2, 0.2);
	fHistMatchEta[icent][ipt][ieta]->SetXTitle("#Delta#eta");
	TString namePhi(Form("fHistMatchPhi_%i_%i_%i",icent,ipt,ieta));
	fHistMatchPhi[icent][ipt][ieta] = new TH1F(namePhi, namePhi, 400, -0.2, 0.2);
	fHistMatchPhi[icent][ipt][ieta]->SetXTitle("#Delta#phi");
	fOutput->Add(fHistMatchEta[icent][ipt][ieta]);
	fOutput->Add(fHistMatchPhi[icent][ipt][ieta]);
      }
    }
  }

  PostData(1, fOutput);
}

//________________________________________________________________________
Int_t AliEmcalClusTrackMatcherTask::GetMomBin(Double_t p) const
{
  // Get momenum bin.

  Int_t pbin=-1;
  if (p<0.5) 
    pbin=0;
  else if (p>=0.5 && p<1.0) 
    pbin=1;
  else if (p>=1.0 && p<1.5) 
    pbin=2;
  else if (p>=1.5 && p<2.) 
    pbin=3;
  else if (p>=2. && p<3.) 
    pbin=4;
  else if (p>=3. && p<4.) 
    pbin=5;
  else if (p>=4. && p<5.) 
    pbin=6;
  else if (p>=5. && p<8.) 
    pbin=7;
  else if (p>=8.) 
    pbin=8;

  return pbin;
}

//________________________________________________________________________
Bool_t AliEmcalClusTrackMatcherTask::Run() 
{
  // Run the matching for the selected options.

  AliParticleContainer *tracks = static_cast<AliParticleContainer*>(fParticleCollArray.At(0));
  AliParticleContainer *clusters = static_cast<AliParticleContainer*>(fParticleCollArray.At(1));

  AliEmcalParticle *partC = 0;
  AliEmcalParticle *partT = 0;

  const Double_t maxd2 = fMaxDistance*fMaxDistance;

  // set the links between tracks and clusters
  clusters->ResetCurrentID();
  while ((partC = static_cast<AliEmcalParticle*>(clusters->GetNextAcceptParticle()))) {
    AliVCluster *clust = partC->GetCluster();

    tracks->ResetCurrentID();
    while ((partT = static_cast<AliEmcalParticle*>(tracks->GetNextAcceptParticle()))) {
      AliVTrack *track = partT->GetTrack();
      Double_t deta = 999;
      Double_t dphi = 999;
      AliPicoTrack::GetEtaPhiDiff(track, clust, dphi, deta);
      Double_t d2 = deta * deta + dphi * dphi;
      if (d2 > maxd2)
        continue;

      Double_t d = TMath::Sqrt(d2);
      partC->AddMatchedObj(tracks->GetCurrentID(), d);
      partC->SetMatchedPtr(fOrigTracks);
      partT->AddMatchedObj(clusters->GetCurrentID(), d);
      partT->SetMatchedPtr(fOrigClus);
 
      if (fCreateHisto) {
	Int_t mombin = GetMomBin(track->P());
	Int_t centbinch = fCentBin;
	if (track->Charge()<0) 
	  centbinch += fNcentBins;
	Int_t etabin = 0;
	if(track->Eta() > 0) 
	  etabin = 1;
	    
	fHistMatchEta[centbinch][mombin][etabin]->Fill(deta);
	fHistMatchPhi[centbinch][mombin][etabin]->Fill(dphi);
        fHistMatchEtaAll->Fill(deta);
        fHistMatchPhiAll->Fill(dphi);
      }
    }
  }

  if (!fModifyObjs)
    return kTRUE;

  clusters->ResetCurrentID();
  while ((partC = static_cast<AliEmcalParticle*>(clusters->GetNextAcceptParticle()))) {
    AliVCluster *clust = partC->GetCluster();
    clust->SetEmcCpvDistance(-1);
    clust->SetTrackDistance(1024, 1024);
    AliAODCaloCluster *ac = dynamic_cast<AliAODCaloCluster*>(clust);
    AliESDCaloCluster *ec = 0;
    if (ac) {
      const Int_t N = ac->GetNTracksMatched();
      for (Int_t i=N-1; i>=0; --i) {
	TObject *ptr = ac->GetTrackMatched(i);
	ac->RemoveTrackMatched(ptr);
      }
    } else {
      ec = dynamic_cast<AliESDCaloCluster*>(clust);
      TArrayI *arr = ec->GetTracksMatched(); 
      if(arr) arr->Set(0);
    }
    const Int_t N = partC->GetNumberOfMatchedObj();
    if (N <= 0)
      continue;
    const UInt_t matchedId = partC->GetMatchedObjId();
    partT = static_cast<AliEmcalParticle*>(tracks->GetParticle(matchedId));
    AliVTrack   *track = partT->GetTrack();
    Double_t deta = 999;
    Double_t dphi = 999;
    AliPicoTrack::GetEtaPhiDiff(track, clust, dphi, deta);
    clust->SetEmcCpvDistance(matchedId);
    clust->SetTrackDistance(deta, dphi);
    if (ac) {
      for (Int_t i=0; i<N; ++i) {
	Int_t id = partC->GetMatchedObjId(i);
	partT = static_cast<AliEmcalParticle*>(tracks->GetParticle(id));
	TObject *obj = partT->GetTrack();
	ac->AddTrackMatched(obj);
      }
    } else {
      TArrayI arr(N);
      for (Int_t i=0; i<N; ++i) {
	Int_t id = partC->GetMatchedObjId(i);
	partT = static_cast<AliEmcalParticle*>(tracks->GetParticle(id));
	arr.AddAt(partT->IdInCollection(),i);
      }
      ec->AddTracksMatched(arr);
    }
  }
  
  tracks->ResetCurrentID();
  while ((partT = static_cast<AliEmcalParticle*>(tracks->GetNextAcceptParticle()))) {
    AliVTrack *track = partT->GetTrack();
    track->ResetStatus(AliVTrack::kEMCALmatch);
    if (partT->GetNumberOfMatchedObj() <= 0)
      continue;
    partC = static_cast<AliEmcalParticle*>(clusters->GetParticle(partT->GetMatchedObjId()));
    track->SetEMCALcluster(partC->IdInCollection());
    track->SetStatus(AliVTrack::kEMCALmatch);
  }

  return kTRUE;
}
 AliEmcalClusTrackMatcherTask.cxx:1
 AliEmcalClusTrackMatcherTask.cxx:2
 AliEmcalClusTrackMatcherTask.cxx:3
 AliEmcalClusTrackMatcherTask.cxx:4
 AliEmcalClusTrackMatcherTask.cxx:5
 AliEmcalClusTrackMatcherTask.cxx:6
 AliEmcalClusTrackMatcherTask.cxx:7
 AliEmcalClusTrackMatcherTask.cxx:8
 AliEmcalClusTrackMatcherTask.cxx:9
 AliEmcalClusTrackMatcherTask.cxx:10
 AliEmcalClusTrackMatcherTask.cxx:11
 AliEmcalClusTrackMatcherTask.cxx:12
 AliEmcalClusTrackMatcherTask.cxx:13
 AliEmcalClusTrackMatcherTask.cxx:14
 AliEmcalClusTrackMatcherTask.cxx:15
 AliEmcalClusTrackMatcherTask.cxx:16
 AliEmcalClusTrackMatcherTask.cxx:17
 AliEmcalClusTrackMatcherTask.cxx:18
 AliEmcalClusTrackMatcherTask.cxx:19
 AliEmcalClusTrackMatcherTask.cxx:20
 AliEmcalClusTrackMatcherTask.cxx:21
 AliEmcalClusTrackMatcherTask.cxx:22
 AliEmcalClusTrackMatcherTask.cxx:23
 AliEmcalClusTrackMatcherTask.cxx:24
 AliEmcalClusTrackMatcherTask.cxx:25
 AliEmcalClusTrackMatcherTask.cxx:26
 AliEmcalClusTrackMatcherTask.cxx:27
 AliEmcalClusTrackMatcherTask.cxx:28
 AliEmcalClusTrackMatcherTask.cxx:29
 AliEmcalClusTrackMatcherTask.cxx:30
 AliEmcalClusTrackMatcherTask.cxx:31
 AliEmcalClusTrackMatcherTask.cxx:32
 AliEmcalClusTrackMatcherTask.cxx:33
 AliEmcalClusTrackMatcherTask.cxx:34
 AliEmcalClusTrackMatcherTask.cxx:35
 AliEmcalClusTrackMatcherTask.cxx:36
 AliEmcalClusTrackMatcherTask.cxx:37
 AliEmcalClusTrackMatcherTask.cxx:38
 AliEmcalClusTrackMatcherTask.cxx:39
 AliEmcalClusTrackMatcherTask.cxx:40
 AliEmcalClusTrackMatcherTask.cxx:41
 AliEmcalClusTrackMatcherTask.cxx:42
 AliEmcalClusTrackMatcherTask.cxx:43
 AliEmcalClusTrackMatcherTask.cxx:44
 AliEmcalClusTrackMatcherTask.cxx:45
 AliEmcalClusTrackMatcherTask.cxx:46
 AliEmcalClusTrackMatcherTask.cxx:47
 AliEmcalClusTrackMatcherTask.cxx:48
 AliEmcalClusTrackMatcherTask.cxx:49
 AliEmcalClusTrackMatcherTask.cxx:50
 AliEmcalClusTrackMatcherTask.cxx:51
 AliEmcalClusTrackMatcherTask.cxx:52
 AliEmcalClusTrackMatcherTask.cxx:53
 AliEmcalClusTrackMatcherTask.cxx:54
 AliEmcalClusTrackMatcherTask.cxx:55
 AliEmcalClusTrackMatcherTask.cxx:56
 AliEmcalClusTrackMatcherTask.cxx:57
 AliEmcalClusTrackMatcherTask.cxx:58
 AliEmcalClusTrackMatcherTask.cxx:59
 AliEmcalClusTrackMatcherTask.cxx:60
 AliEmcalClusTrackMatcherTask.cxx:61
 AliEmcalClusTrackMatcherTask.cxx:62
 AliEmcalClusTrackMatcherTask.cxx:63
 AliEmcalClusTrackMatcherTask.cxx:64
 AliEmcalClusTrackMatcherTask.cxx:65
 AliEmcalClusTrackMatcherTask.cxx:66
 AliEmcalClusTrackMatcherTask.cxx:67
 AliEmcalClusTrackMatcherTask.cxx:68
 AliEmcalClusTrackMatcherTask.cxx:69
 AliEmcalClusTrackMatcherTask.cxx:70
 AliEmcalClusTrackMatcherTask.cxx:71
 AliEmcalClusTrackMatcherTask.cxx:72
 AliEmcalClusTrackMatcherTask.cxx:73
 AliEmcalClusTrackMatcherTask.cxx:74
 AliEmcalClusTrackMatcherTask.cxx:75
 AliEmcalClusTrackMatcherTask.cxx:76
 AliEmcalClusTrackMatcherTask.cxx:77
 AliEmcalClusTrackMatcherTask.cxx:78
 AliEmcalClusTrackMatcherTask.cxx:79
 AliEmcalClusTrackMatcherTask.cxx:80
 AliEmcalClusTrackMatcherTask.cxx:81
 AliEmcalClusTrackMatcherTask.cxx:82
 AliEmcalClusTrackMatcherTask.cxx:83
 AliEmcalClusTrackMatcherTask.cxx:84
 AliEmcalClusTrackMatcherTask.cxx:85
 AliEmcalClusTrackMatcherTask.cxx:86
 AliEmcalClusTrackMatcherTask.cxx:87
 AliEmcalClusTrackMatcherTask.cxx:88
 AliEmcalClusTrackMatcherTask.cxx:89
 AliEmcalClusTrackMatcherTask.cxx:90
 AliEmcalClusTrackMatcherTask.cxx:91
 AliEmcalClusTrackMatcherTask.cxx:92
 AliEmcalClusTrackMatcherTask.cxx:93
 AliEmcalClusTrackMatcherTask.cxx:94
 AliEmcalClusTrackMatcherTask.cxx:95
 AliEmcalClusTrackMatcherTask.cxx:96
 AliEmcalClusTrackMatcherTask.cxx:97
 AliEmcalClusTrackMatcherTask.cxx:98
 AliEmcalClusTrackMatcherTask.cxx:99
 AliEmcalClusTrackMatcherTask.cxx:100
 AliEmcalClusTrackMatcherTask.cxx:101
 AliEmcalClusTrackMatcherTask.cxx:102
 AliEmcalClusTrackMatcherTask.cxx:103
 AliEmcalClusTrackMatcherTask.cxx:104
 AliEmcalClusTrackMatcherTask.cxx:105
 AliEmcalClusTrackMatcherTask.cxx:106
 AliEmcalClusTrackMatcherTask.cxx:107
 AliEmcalClusTrackMatcherTask.cxx:108
 AliEmcalClusTrackMatcherTask.cxx:109
 AliEmcalClusTrackMatcherTask.cxx:110
 AliEmcalClusTrackMatcherTask.cxx:111
 AliEmcalClusTrackMatcherTask.cxx:112
 AliEmcalClusTrackMatcherTask.cxx:113
 AliEmcalClusTrackMatcherTask.cxx:114
 AliEmcalClusTrackMatcherTask.cxx:115
 AliEmcalClusTrackMatcherTask.cxx:116
 AliEmcalClusTrackMatcherTask.cxx:117
 AliEmcalClusTrackMatcherTask.cxx:118
 AliEmcalClusTrackMatcherTask.cxx:119
 AliEmcalClusTrackMatcherTask.cxx:120
 AliEmcalClusTrackMatcherTask.cxx:121
 AliEmcalClusTrackMatcherTask.cxx:122
 AliEmcalClusTrackMatcherTask.cxx:123
 AliEmcalClusTrackMatcherTask.cxx:124
 AliEmcalClusTrackMatcherTask.cxx:125
 AliEmcalClusTrackMatcherTask.cxx:126
 AliEmcalClusTrackMatcherTask.cxx:127
 AliEmcalClusTrackMatcherTask.cxx:128
 AliEmcalClusTrackMatcherTask.cxx:129
 AliEmcalClusTrackMatcherTask.cxx:130
 AliEmcalClusTrackMatcherTask.cxx:131
 AliEmcalClusTrackMatcherTask.cxx:132
 AliEmcalClusTrackMatcherTask.cxx:133
 AliEmcalClusTrackMatcherTask.cxx:134
 AliEmcalClusTrackMatcherTask.cxx:135
 AliEmcalClusTrackMatcherTask.cxx:136
 AliEmcalClusTrackMatcherTask.cxx:137
 AliEmcalClusTrackMatcherTask.cxx:138
 AliEmcalClusTrackMatcherTask.cxx:139
 AliEmcalClusTrackMatcherTask.cxx:140
 AliEmcalClusTrackMatcherTask.cxx:141
 AliEmcalClusTrackMatcherTask.cxx:142
 AliEmcalClusTrackMatcherTask.cxx:143
 AliEmcalClusTrackMatcherTask.cxx:144
 AliEmcalClusTrackMatcherTask.cxx:145
 AliEmcalClusTrackMatcherTask.cxx:146
 AliEmcalClusTrackMatcherTask.cxx:147
 AliEmcalClusTrackMatcherTask.cxx:148
 AliEmcalClusTrackMatcherTask.cxx:149
 AliEmcalClusTrackMatcherTask.cxx:150
 AliEmcalClusTrackMatcherTask.cxx:151
 AliEmcalClusTrackMatcherTask.cxx:152
 AliEmcalClusTrackMatcherTask.cxx:153
 AliEmcalClusTrackMatcherTask.cxx:154
 AliEmcalClusTrackMatcherTask.cxx:155
 AliEmcalClusTrackMatcherTask.cxx:156
 AliEmcalClusTrackMatcherTask.cxx:157
 AliEmcalClusTrackMatcherTask.cxx:158
 AliEmcalClusTrackMatcherTask.cxx:159
 AliEmcalClusTrackMatcherTask.cxx:160
 AliEmcalClusTrackMatcherTask.cxx:161
 AliEmcalClusTrackMatcherTask.cxx:162
 AliEmcalClusTrackMatcherTask.cxx:163
 AliEmcalClusTrackMatcherTask.cxx:164
 AliEmcalClusTrackMatcherTask.cxx:165
 AliEmcalClusTrackMatcherTask.cxx:166
 AliEmcalClusTrackMatcherTask.cxx:167
 AliEmcalClusTrackMatcherTask.cxx:168
 AliEmcalClusTrackMatcherTask.cxx:169
 AliEmcalClusTrackMatcherTask.cxx:170
 AliEmcalClusTrackMatcherTask.cxx:171
 AliEmcalClusTrackMatcherTask.cxx:172
 AliEmcalClusTrackMatcherTask.cxx:173
 AliEmcalClusTrackMatcherTask.cxx:174
 AliEmcalClusTrackMatcherTask.cxx:175
 AliEmcalClusTrackMatcherTask.cxx:176
 AliEmcalClusTrackMatcherTask.cxx:177
 AliEmcalClusTrackMatcherTask.cxx:178
 AliEmcalClusTrackMatcherTask.cxx:179
 AliEmcalClusTrackMatcherTask.cxx:180
 AliEmcalClusTrackMatcherTask.cxx:181
 AliEmcalClusTrackMatcherTask.cxx:182
 AliEmcalClusTrackMatcherTask.cxx:183
 AliEmcalClusTrackMatcherTask.cxx:184
 AliEmcalClusTrackMatcherTask.cxx:185
 AliEmcalClusTrackMatcherTask.cxx:186
 AliEmcalClusTrackMatcherTask.cxx:187
 AliEmcalClusTrackMatcherTask.cxx:188
 AliEmcalClusTrackMatcherTask.cxx:189
 AliEmcalClusTrackMatcherTask.cxx:190
 AliEmcalClusTrackMatcherTask.cxx:191
 AliEmcalClusTrackMatcherTask.cxx:192
 AliEmcalClusTrackMatcherTask.cxx:193
 AliEmcalClusTrackMatcherTask.cxx:194
 AliEmcalClusTrackMatcherTask.cxx:195
 AliEmcalClusTrackMatcherTask.cxx:196
 AliEmcalClusTrackMatcherTask.cxx:197
 AliEmcalClusTrackMatcherTask.cxx:198
 AliEmcalClusTrackMatcherTask.cxx:199
 AliEmcalClusTrackMatcherTask.cxx:200
 AliEmcalClusTrackMatcherTask.cxx:201
 AliEmcalClusTrackMatcherTask.cxx:202
 AliEmcalClusTrackMatcherTask.cxx:203
 AliEmcalClusTrackMatcherTask.cxx:204
 AliEmcalClusTrackMatcherTask.cxx:205
 AliEmcalClusTrackMatcherTask.cxx:206
 AliEmcalClusTrackMatcherTask.cxx:207
 AliEmcalClusTrackMatcherTask.cxx:208
 AliEmcalClusTrackMatcherTask.cxx:209
 AliEmcalClusTrackMatcherTask.cxx:210
 AliEmcalClusTrackMatcherTask.cxx:211
 AliEmcalClusTrackMatcherTask.cxx:212
 AliEmcalClusTrackMatcherTask.cxx:213
 AliEmcalClusTrackMatcherTask.cxx:214
 AliEmcalClusTrackMatcherTask.cxx:215
 AliEmcalClusTrackMatcherTask.cxx:216
 AliEmcalClusTrackMatcherTask.cxx:217
 AliEmcalClusTrackMatcherTask.cxx:218
 AliEmcalClusTrackMatcherTask.cxx:219
 AliEmcalClusTrackMatcherTask.cxx:220
 AliEmcalClusTrackMatcherTask.cxx:221
 AliEmcalClusTrackMatcherTask.cxx:222
 AliEmcalClusTrackMatcherTask.cxx:223
 AliEmcalClusTrackMatcherTask.cxx:224
 AliEmcalClusTrackMatcherTask.cxx:225
 AliEmcalClusTrackMatcherTask.cxx:226
 AliEmcalClusTrackMatcherTask.cxx:227
 AliEmcalClusTrackMatcherTask.cxx:228
 AliEmcalClusTrackMatcherTask.cxx:229
 AliEmcalClusTrackMatcherTask.cxx:230
 AliEmcalClusTrackMatcherTask.cxx:231
 AliEmcalClusTrackMatcherTask.cxx:232
 AliEmcalClusTrackMatcherTask.cxx:233
 AliEmcalClusTrackMatcherTask.cxx:234
 AliEmcalClusTrackMatcherTask.cxx:235
 AliEmcalClusTrackMatcherTask.cxx:236
 AliEmcalClusTrackMatcherTask.cxx:237
 AliEmcalClusTrackMatcherTask.cxx:238
 AliEmcalClusTrackMatcherTask.cxx:239
 AliEmcalClusTrackMatcherTask.cxx:240
 AliEmcalClusTrackMatcherTask.cxx:241
 AliEmcalClusTrackMatcherTask.cxx:242
 AliEmcalClusTrackMatcherTask.cxx:243
 AliEmcalClusTrackMatcherTask.cxx:244
 AliEmcalClusTrackMatcherTask.cxx:245
 AliEmcalClusTrackMatcherTask.cxx:246
 AliEmcalClusTrackMatcherTask.cxx:247
 AliEmcalClusTrackMatcherTask.cxx:248
 AliEmcalClusTrackMatcherTask.cxx:249
 AliEmcalClusTrackMatcherTask.cxx:250
 AliEmcalClusTrackMatcherTask.cxx:251
 AliEmcalClusTrackMatcherTask.cxx:252
 AliEmcalClusTrackMatcherTask.cxx:253
 AliEmcalClusTrackMatcherTask.cxx:254
 AliEmcalClusTrackMatcherTask.cxx:255
 AliEmcalClusTrackMatcherTask.cxx:256
 AliEmcalClusTrackMatcherTask.cxx:257
 AliEmcalClusTrackMatcherTask.cxx:258
 AliEmcalClusTrackMatcherTask.cxx:259
 AliEmcalClusTrackMatcherTask.cxx:260
 AliEmcalClusTrackMatcherTask.cxx:261
 AliEmcalClusTrackMatcherTask.cxx:262
 AliEmcalClusTrackMatcherTask.cxx:263
 AliEmcalClusTrackMatcherTask.cxx:264
 AliEmcalClusTrackMatcherTask.cxx:265
 AliEmcalClusTrackMatcherTask.cxx:266
 AliEmcalClusTrackMatcherTask.cxx:267
 AliEmcalClusTrackMatcherTask.cxx:268
 AliEmcalClusTrackMatcherTask.cxx:269
 AliEmcalClusTrackMatcherTask.cxx:270
 AliEmcalClusTrackMatcherTask.cxx:271
 AliEmcalClusTrackMatcherTask.cxx:272
 AliEmcalClusTrackMatcherTask.cxx:273
 AliEmcalClusTrackMatcherTask.cxx:274
 AliEmcalClusTrackMatcherTask.cxx:275
 AliEmcalClusTrackMatcherTask.cxx:276
 AliEmcalClusTrackMatcherTask.cxx:277
 AliEmcalClusTrackMatcherTask.cxx:278
 AliEmcalClusTrackMatcherTask.cxx:279
 AliEmcalClusTrackMatcherTask.cxx:280
 AliEmcalClusTrackMatcherTask.cxx:281
 AliEmcalClusTrackMatcherTask.cxx:282
 AliEmcalClusTrackMatcherTask.cxx:283
 AliEmcalClusTrackMatcherTask.cxx:284
 AliEmcalClusTrackMatcherTask.cxx:285
 AliEmcalClusTrackMatcherTask.cxx:286
 AliEmcalClusTrackMatcherTask.cxx:287
 AliEmcalClusTrackMatcherTask.cxx:288