ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
 
/* $Id$ */

//---------------------------------------------------------------------
// FastJet v2.3.4 finder algorithm interface
//
// Author: swensy.jangal@ires.in2p3.fr 
//
// ** 2011 magali.estienne@subatech.in2p3.fr &  alexandre.shabetai@cern.ch
// Modified accordingly to reader/finder splitting and new handling of neutral information (via FastJetInput) 
//---------------------------------------------------------------------

#include <Riostream.h>

#include "AliFastJetInput.h"
#include "AliFastJetBkg.h"
#include "AliAODJetEventBackground.h"
#include "AliAODJet.h"
#include "AliSISConeJetFinder.h"
#include "AliSISConeJetHeader.h"

#include "fastjet/AreaDefinition.hh"
#include "fastjet/ClusterSequenceArea.hh"
#include "fastjet/JetDefinition.hh"
#include "fastjet/PseudoJet.hh"
// get info on how fastjet was configured
#include "fastjet/config.h"

#if defined(ENABLE_PLUGIN_SISCONE) || defined(FASTJET_ENABLE_PLUGIN_SISCONE)
#include "fastjet/SISConePlugin.hh"
#endif

#include<vector> 


using namespace std;

ClassImp(AliSISConeJetFinder)

////////////////////////////////////////////////////////////////////////

AliSISConeJetFinder::AliSISConeJetFinder():
  AliJetFinder(),
  fInputFJ(new AliFastJetInput()),
  fJetBkg(new  AliFastJetBkg())
{
  // Constructor
}

//____________________________________________________________________________
AliSISConeJetFinder::~AliSISConeJetFinder()
{
  // destructor
  delete  fInputFJ;
  delete  fJetBkg;

}

//______________________________________________________________________________
void AliSISConeJetFinder::FindJets()
{
  // run the SISCone Jet finder

  // Pick up siscone header  
  AliSISConeJetHeader *header = (AliSISConeJetHeader*)fHeader;
  Int_t debug                 = header->GetDebug();     // debug option
  Bool_t bgMode               = header->GetBGMode();// Here one choose to subtract BG or not

  // Read input particles 
  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
  if(inputParticles.size()==0){
    if(debug>0) Printf("%s:%d No input particles found, skipping event",(char*)__FILE__,__LINE__);
    return;
  }

  //------------------- SISCONE PLUGIN CONFIGURATION ----------------------
  // Look for SISCone parameters in the header and definition of the plugin.  

  Double_t coneRadius                       = header->GetConeRadius();                 // cone radius
  Double_t overlapThreshold                 = header->GetOverlapThreshold();           // overlap parameter
  Int_t    nPassMax                         = header->GetNPassMax();                   // maximum number of passes
  Double_t ptProtoJetMin                    = header->GetPtProtojetMin();              // pT min of protojets
  Double_t caching                          = header->GetCaching();                    // do we record found cones for this set of data?
  // For bckg
  double rBkgParam                          = header->GetRparamBkg();
  fastjet::Strategy strategy                = header->GetStrategy();
  fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();

  //  if (header->GetSplitMergeScale() == 0) fastjet::SISConePlugin::SplitMergeScale splitMergeScale = fastjet::SISConePlugin::SM_pttilde; // There's only one split merge scale
  //  Double_t splitMergeStoppingScale = header->GetSplitMergeStoppingScale(); // Additional cut on pt_tilde of protojets

  fastjet::JetDefinition::Plugin * plugin;
  plugin = new fastjet::SISConePlugin(coneRadius, overlapThreshold, nPassMax, ptProtoJetMin, caching);

  //------------------- CHOICE OF JET AREA ---------------------- 
  // Definition of jet areas for background subtraction
  // For more informations about jet areas see : The Catchment Area of Jets M. Cacciari, G. Salam and G. Soyez

  Double_t ghostEtamax        = header->GetGhostEtaMax();       // maximum eta in which a ghost can be generated
  Double_t ghostArea          = header->GetGhostArea();         // area of a ghost
  Int_t    activeAreaRepeats  = header->GetActiveAreaRepeats(); // do we repeat area calculation?
  Double_t gridScatter        = header->GetGridScatter();       // fractional random fluctuations of the position of the ghosts on the y-phi grid
  Double_t ktScatter          = header->GetKtScatter();         // fractional random fluctuations of the tranverse momentum of the ghosts on the y-phi grid
  Double_t meanGhostKt        = header->GetMeanGhostKt();       // average transverse momentum of the ghosts.

  Double_t areaTypeNumber  = header->GetAreaTypeNumber();       // the number determines jet area type 
  fastjet::AreaType areaType = fastjet::active_area;
  if (areaTypeNumber == 1)  areaType = fastjet::active_area;                 
  if (areaTypeNumber == 2)  areaType = fastjet::active_area_explicit_ghosts; 
  if (areaTypeNumber == 3)  areaType = fastjet::one_ghost_passive_area;      
  if (areaTypeNumber == 4)  areaType = fastjet::passive_area;                
  if (areaTypeNumber == 5)  areaType = fastjet::voronoi_area;                

  fastjet::AreaDefinition areaDef;

  if (areaTypeNumber < 5) 
    {
      fastjet::GhostedAreaSpec ghostSpec(ghostEtamax, activeAreaRepeats, ghostArea, gridScatter, ktScatter, meanGhostKt);
      areaDef = fastjet::AreaDefinition(areaType,ghostSpec);
    }

  if (areaTypeNumber == 5)
    {
      Double_t effectiveRFact = header->GetEffectiveRFact();
      fastjet::VoronoiAreaSpec ghostSpec(effectiveRFact);
      areaDef = fastjet::AreaDefinition(areaType,ghostSpec);
    }

  //------------------- JETS FINDING AND EXTRACTION ----------------------
  fastjet::ClusterSequenceArea clust_seq(inputParticles, plugin, areaDef);

  vector<fastjet::PseudoJet> jets;

  if (bgMode == 1)// BG subtraction mode
    {
      //------------------- CLUSTER JETS FINDING FOR RHO ESTIMATION ----------------------
      // run the jet clustering with the above jet definition
      fastjet::JetAlgorithm algorithmBkg = fastjet::kt_algorithm;
      Int_t algo = header->GetBGAlgorithm();
      if (algo == 0) algorithmBkg = fastjet::kt_algorithm;
      if (algo == 1) algorithmBkg = fastjet::cambridge_algorithm;
      fastjet::JetDefinition jetDefBkg(algorithmBkg, rBkgParam, recombScheme, strategy);
      fastjet::ClusterSequenceArea clust_seq_bkg(inputParticles, jetDefBkg, areaDef);
      
      // save a comment in the header
      TString comment = "Running Siscone algorithm with the following setup. ";
      comment+= "Jet definition: ";
      //      comment+= TString(plugin.description());
      comment+= "Jet bckg definition: ";
      comment+= TString(jetDefBkg.description());
      comment+= ". Area definition: ";
      comment+= TString(areaDef.description());
      comment+= ". Strategy adopted by FastJet and bkg: ";
      comment+= TString(clust_seq.strategy_string());
      header->SetComment(comment);
      if(debug>0){
	cout << "--------------------------------------------------------" << endl;
	cout << comment << endl;
	cout << "--------------------------------------------------------" << endl;
      }

      // Here we extract inclusive jets with pt > ptmin, sorted by pt 
      Double_t ptMin = header->GetMinJetPt(); 
      vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(); // ptMin removed
      //      vector<fastjet::PseudoJet> jets = sorted_by_pt(inclusiveJets);

      //------------------- BACKGROUND SUBTRACTION ----------------------

      // Set the rapidity-azimuth range within which to study background
      Double_t rapMin = header->GetRapMin();
      Double_t rapMax = header->GetRapMax();
      Double_t phiMin = header->GetPhiMin();
      Double_t phiMax = header->GetPhiMax();
      fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);

      // Extract rho and sigma
      Double_t rho = 0.;
      Double_t sigma = 0.;
      Double_t meanarea = 0.;
      Bool_t kUse4VectorArea = header->Use4VectorArea();
      vector<fastjet::PseudoJet> bkgJets = clust_seq_bkg.inclusive_jets();
      clust_seq_bkg.get_median_rho_and_sigma(bkgJets,range, kUse4VectorArea, rho, sigma, meanarea, false);

      // subtract background and extract jets bkg subtracted
      vector<fastjet::PseudoJet> subJets = clust_seq.subtracted_jets(rho,ptMin);

      // sort jets into increasing pt
      jets = sorted_by_pt(subJets);  

    }
  else // No BG subtraction
    {

      // save a comment in the header
      TString comment = "Running Siscone algorithm with the following setup. ";
      comment+= "Jet definition: ";
      //    comment+= TString(plugin.description());
      comment+= ". Strategy adopted by FastJet: ";
      comment+= TString(clust_seq.strategy_string());
      header->SetComment(comment);
      if(debug>0){
	cout << "--------------------------------------------------------" << endl;
	cout << comment << endl;
	cout << "--------------------------------------------------------" << endl;
      }
      //header->PrintParameters();

      // Here we extract inclusive jets with pt > ptmin, sorted by pt 
      Double_t ptMin = header->GetMinJetPt(); 
      vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(ptMin);
      jets = sorted_by_pt(inclusiveJets);

    }

  //------------------- JET AND TRACK STORAGE ----------------------
  for (size_t j = 0; j < jets.size(); j++) { // loop for jets

    double area      = clust_seq.area(jets[j]);
    double areaError = clust_seq.area_error(jets[j]);

    if(debug>0) printf("Jet found %5d %9.5f %8.5f %10.3f %8.3f +- %6.3f\n", (Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp(), area, areaError);

    vector<fastjet::PseudoJet> constituents = clust_seq.constituents(jets[j]);
    int nCon= constituents.size();
    TArrayI ind(nCon);
      
    if ((jets[j].eta() > (header->GetJetEtaMax())) ||
        (jets[j].eta() < (header->GetJetEtaMin())) ||
        (jets[j].phi() > (header->GetJetPhiMax())) ||
        (jets[j].phi() < (header->GetJetPhiMin())) ||
        (jets[j].perp() < header->GetMinJetPt())) continue; // acceptance eta range and etmin

    // go to write AOD  info
    AliAODJet aodjet (jets[j].px(), jets[j].py(), jets[j].pz(), jets[j].E());
    aodjet.SetEffArea(area,areaError);
    //cout << "Printing jet " << endl;
    if(debug>0) aodjet.Print("");
    
    for (int i=0; i < nCon; i++)
      {
        fastjet::PseudoJet mPart=constituents[i];
        ind[i]=mPart.user_index();
	
	// Jet constituents (charged tracks) added to the AliAODJet
	AliJetCalTrkEvent* calEvt  = GetCalTrkEvent();
	for(Int_t itrack=0; itrack<calEvt->GetNCalTrkTracks(); itrack++)
          {
	    if(itrack==ind[i])
	      {
		TObject *track = calEvt->GetCalTrkTrack(itrack)->GetTrackObject();
		aodjet.AddTrack(track);
	      }
          }
      } // End loop on Constituents
    
    AddJet(aodjet);
    
  } // end loop for jets
  
  delete plugin;

}
 
//____________________________________________________________________________
void AliSISConeJetFinder::WriteJHeaderToFile() const
{
  // Write Jet Header To File(
  fHeader->Write();
}

//____________________________________________________________________________
Bool_t AliSISConeJetFinder::ProcessEvent()
{
  // Process one event
  // Charged only or charged+neutral jets

  fInputFJ->SetHeader(fHeader);
  fInputFJ->SetCalTrkEvent(GetCalTrkEvent());
  fInputFJ->FillInput();
  
  // Jets
  FindJets();

  // Background  
  if( fAODEvBkg){
    fJetBkg->SetHeader(fHeader);
    Double_t sigma1 = 0,meanarea1= 0,sigma2 = 0,meanarea2 = 0;
    Double_t bkg1 = 0,bkg2 = 0;

    fJetBkg->SetFastJetInput(fInputFJ);
    fJetBkg->BkgFastJetb(bkg1,sigma1,meanarea1);
    fJetBkg->BkgFastJetWoHardest(bkg2,sigma2,meanarea2);
    fAODEvBkg->SetBackground(0,bkg1,sigma1,meanarea1);
    fAODEvBkg->SetBackground(1,bkg2,sigma2,meanarea2);
  }

  Reset();
  return kTRUE;

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