ROOT logo
// $Id$
//
// Jet model task to merge to existing branches
// only implemented for track branches
//
// Author: M. Verweij

#include "AliJetFastSimulation.h"

#include <TClonesArray.h>
#include <TFolder.h>
#include <TLorentzVector.h>
#include <TParticle.h>
#include <TParticlePDG.h>
#include <TRandom3.h>
#include <TProfile.h>
#include <TGrid.h>
#include <TFile.h>
#include <TF1.h>
#include "AliAnalysisManager.h"
#include "AliEMCALDigit.h"
#include "AliEMCALGeometry.h"
#include "AliEMCALRecPoint.h"
#include "AliGenerator.h"
#include "AliHeader.h"
#include "AliLog.h"
#include "AliPicoTrack.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliStack.h"
#include "AliStack.h"
#include "AliVCluster.h"
#include "AliVEvent.h"

ClassImp(AliJetFastSimulation)

//________________________________________________________________________
AliJetFastSimulation::AliJetFastSimulation() : 
AliAnalysisTaskEmcal("AliJetFastSimulation",kTRUE),
  fTracksOutName(""),
  fTracksOut(0x0),
  fNTrackClasses(2),
  fRandom(0),
  fEfficiencyFixed(1.1),
  fMomResH1(0x0),
  fMomResH2(0x0),
  fMomResH3(0x0),
  fMomResH1Fit(0x0),
  fMomResH2Fit(0x0),
  fMomResH3Fit(0x0),
  fhEffH1(0x0),
  fhEffH2(0x0),
  fhEffH3(0x0),
  fUseTrPtResolutionSmearing(kFALSE),
  fUseDiceEfficiency(kFALSE),
  fDiceEfficiencyMinPt(-1.),
  fUseTrPtResolutionFromOADB(kFALSE),
  fUseTrEfficiencyFromOADB(kFALSE),
  fPathTrPtResolution(""),
  fPathTrEfficiency(""),
  fHistPtDet(0),
  fh2PtGenPtSmeared(0),
  fp1Efficiency(0),
  fp1PtResolution(0)
{
  // Default constructor.
  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliJetFastSimulation::AliJetFastSimulation(const char *name) : 
  AliAnalysisTaskEmcal(name,kTRUE),
  fTracksOutName(""),
  fTracksOut(0x0),
  fNTrackClasses(2),
  fRandom(0),
  fEfficiencyFixed(1.1),
  fMomResH1(0x0),
  fMomResH2(0x0),
  fMomResH3(0x0),
  fMomResH1Fit(0x0),
  fMomResH2Fit(0x0),
  fMomResH3Fit(0x0),
  fhEffH1(0x0),
  fhEffH2(0x0),
  fhEffH3(0x0),
  fUseTrPtResolutionSmearing(kFALSE),
  fUseDiceEfficiency(kFALSE),
  fDiceEfficiencyMinPt(-1.),
  fUseTrPtResolutionFromOADB(kFALSE),
  fUseTrEfficiencyFromOADB(kFALSE),
  fPathTrPtResolution(""),
  fPathTrEfficiency(""),
  fHistPtDet(0),
  fh2PtGenPtSmeared(0),
  fp1Efficiency(0),
  fp1PtResolution(0)
{
  // Standard constructor.
  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliJetFastSimulation::~AliJetFastSimulation()
{
  // Destructor

  delete fRandom;
}

//________________________________________________________________________
void AliJetFastSimulation::ExecOnce() 
{
  // Exec only once.

  AliAnalysisTaskEmcal::ExecOnce();

  if(!fRandom) fRandom = new TRandom3(0);

  if (!fTracksOutName.IsNull()) {
    fTracksOut = new TClonesArray("AliPicoTrack");
    fTracksOut->SetName(fTracksOutName);
    if (InputEvent()->FindListObject(fTracksOutName)) {
      AliFatal(Form("%s: Collection %s is already present in the event!", GetName(), fTracksOutName.Data()));
      return;
    }
    else {
      InputEvent()->AddObject(fTracksOut);
    }
  }
}
//________________________________________________________________________
void AliJetFastSimulation::LocalInit() {
  //initialize track response
  if(fUseTrPtResolutionFromOADB) LoadTrPtResolutionRootFileFromOADB();
  if(fUseTrEfficiencyFromOADB)   LoadTrEfficiencyRootFileFromOADB();
  FitMomentumResolution();
}

//________________________________________________________________________
void AliJetFastSimulation::UserCreateOutputObjects() 
{
  AliAnalysisTaskEmcal::UserCreateOutputObjects();

  const Int_t nBinPt = 100;
  Double_t binLimitsPt[nBinPt+1];
  for(Int_t iPt = 0;iPt <= nBinPt;iPt++){
    if(iPt == 0){
      binLimitsPt[iPt] = 0.0;
    } else {// 1.0
      binLimitsPt[iPt] =  binLimitsPt[iPt-1] + 1.0;
    }
  }

  fHistPtDet = new TH1F("fHistpt","fHistPtDet;#it{p}_{T};N",nBinPt,binLimitsPt);
  fOutput->Add(fHistPtDet);

  fh2PtGenPtSmeared = new TH2F("fh2PtGenPtSmeared","fh2PtGenPtSmeared",nBinPt,binLimitsPt,nBinPt,binLimitsPt);
  fOutput->Add(fh2PtGenPtSmeared);

  fp1Efficiency = new TProfile("fp1Efficiency","fp1Efficiency",nBinPt,binLimitsPt);
  fOutput->Add(fp1Efficiency);

  fp1PtResolution = new TProfile("fp1PtResolution","fp1PtResolution",nBinPt,binLimitsPt);
  fOutput->Add(fp1PtResolution);

  PostData(1, fOutput); // Post data for ALL output slots > 0 here.
}


//________________________________________________________________________
Bool_t AliJetFastSimulation::Run() 
{
  //Check if information is provided detector level effects
  if(!fMomResH1 && fNTrackClasses>0 ) 
    fUseTrPtResolutionSmearing = 0;
  if(!fMomResH2 && fNTrackClasses>1 ) 
    fUseTrPtResolutionSmearing = 0;
  if(!fMomResH3 && fNTrackClasses>2 ) 
    fUseTrPtResolutionSmearing = 0;

  if(fEfficiencyFixed < 1.)
    fUseDiceEfficiency = 1; // 1 is the default; 2 can be set by user but not implemented
  else {
    if(!fhEffH1 && fNTrackClasses>0 ) 
      fUseDiceEfficiency = 0;
    if(!fhEffH2 && fNTrackClasses>1 ) 
      fUseDiceEfficiency = 0;
    if(!fhEffH3 && fNTrackClasses>2 ) 
      fUseDiceEfficiency = 0;
  }

  fTracksOut->Delete();
  SimulateTracks();
  return kTRUE;
}

//________________________________________________________________________
void AliJetFastSimulation::SimulateTracks()
{
  //Apply toy detector simulation to tracks
  Int_t it = 0;
  const Int_t nTracks = fTracks->GetEntriesFast();
   for (Int_t i = 0; i < nTracks; ++i) {
    AliPicoTrack *picotrack = static_cast<AliPicoTrack*>(fTracks->At(i));
    if (!picotrack)
      continue;

    Bool_t accept = kTRUE;
    Double_t eff[3] = {0};
    Double_t rnd = fRandom->Uniform(1.);  
    if(fUseDiceEfficiency) accept = DiceEfficiency(picotrack,eff,rnd);
    if(!accept) continue;

    AliPicoTrack *track = NULL;
    if(fUseTrPtResolutionSmearing) {
      track = SmearPt(picotrack,eff,rnd);
      (*fTracksOut)[it] = track;
    } else
      track = new ((*fTracksOut)[it]) AliPicoTrack(*picotrack);

    track->SetBit(TObject::kBitMask,1);
    fHistPtDet->Fill(track->Pt());
    it++;
   }
}

//________________________________________________________________________
Bool_t AliJetFastSimulation::DiceEfficiency(AliPicoTrack *vp, Double_t eff[3], Double_t rnd)
{
  // Dice to decide if particle is kept or not - toy  model for efficiency
  //
  Double_t sumEff = 0.;
  Double_t pT = 0.;
 
  if(fEfficiencyFixed<1.)
    sumEff = fEfficiencyFixed;
  else {
    pT = vp->Pt();
    Double_t pTtmp = pT;
    if(pT>10.) pTtmp = 10.;
    if(fhEffH1) eff[0] = fhEffH1->GetBinContent(fhEffH1->FindBin(pTtmp));
    if(fhEffH2) eff[1] = fhEffH2->GetBinContent(fhEffH2->FindBin(pTtmp));
    if(fhEffH3) eff[2] = fhEffH3->GetBinContent(fhEffH3->FindBin(pTtmp));

    sumEff = eff[0]+eff[1]+eff[2];
  }
  fp1Efficiency->Fill(vp->Pt(),sumEff);
  if(rnd>sumEff && pT > fDiceEfficiencyMinPt) return kFALSE;
  return kTRUE;
}

//________________________________________________________________________
AliPicoTrack* AliJetFastSimulation::SmearPt(AliPicoTrack *vp, Double_t eff[3], Double_t rnd)
{
  //Smear momentum of generated particle
  Double_t smear = 1.;
  Double_t  pT = vp->Pt();
  //Select hybrid track category

  //Sort efficiencies from large to small
  Int_t cat[3] = {0};
  TMath::Sort(3,eff,cat);
  if(rnd<=eff[cat[2]])
    smear = GetMomentumSmearing(cat[2],pT);
  else if(rnd<=(eff[cat[2]]+eff[cat[1]]))
    smear = GetMomentumSmearing(cat[1],pT);
  else
    smear = GetMomentumSmearing(cat[0],pT);
  
  fp1PtResolution->Fill(vp->Pt(),smear);

  Double_t sigma = vp->Pt()*smear;
  Double_t pTrec = fRandom->Gaus(vp->Pt(),sigma);
  fh2PtGenPtSmeared->Fill(vp->Pt(),pTrec);

  AliPicoTrack *picotrack = new AliPicoTrack(pTrec,
					     vp->Eta(),
					     vp->Phi(),
					     vp->Charge(),
					     vp->GetLabel(),
					     AliPicoTrack::GetTrackType(vp),
					     vp->GetTrackEtaOnEMCal(),
					     vp->GetTrackPhiOnEMCal(),
					     vp->GetTrackPtOnEMCal(),
					     vp->IsEMCAL(),
					     0.13957); //assume pion mass
    return picotrack;
}

//________________________________________________________________________
Double_t AliJetFastSimulation::GetMomentumSmearing(Int_t cat, Double_t pt) {

  //
  // Get smearing on generated momentum
  //

  TProfile *fMomRes = 0x0;
  if(cat==1 && fMomResH1) fMomRes = (TProfile*)fMomResH1->Clone("fMomRes");
  if(cat==2 && fMomResH2) fMomRes = (TProfile*)fMomResH2->Clone("fMomRes");
  if(cat==3 && fMomResH3) fMomRes = (TProfile*)fMomResH3->Clone("fMomRes");

  if(!fMomRes)
    return 0.;

  Double_t smear = 0.;
  if(pt>20.) {
    if(cat==1 && fMomResH1Fit) smear = fMomResH1Fit->Eval(pt);
    if(cat==2 && fMomResH2Fit) smear = fMomResH2Fit->Eval(pt);
    if(cat==3 && fMomResH3Fit) smear = fMomResH3Fit->Eval(pt);
  }
  else {
    Int_t bin = fMomRes->FindBin(pt);
    smear = fRandom->Gaus(fMomRes->GetBinContent(bin),fMomRes->GetBinError(bin));
  }
  
  if(fMomRes) delete fMomRes;

  return smear;
}

//________________________________________________________________________
void AliJetFastSimulation::LoadTrPtResolutionRootFileFromOADB() {

  if (!gGrid && fPathTrPtResolution.Contains("alien://")) {
     AliInfo("Trying to connect to AliEn ...");
     TGrid::Connect("alien://");
   }

  TFile *f = TFile::Open(fPathTrPtResolution.Data());
  if(!f)return;
  TProfile *fProfPtPtSigma1PtGlobSt     = NULL;
  TProfile *fProfPtPtSigma1PtGlobCnoSPD = NULL;
  TProfile *fProfPtPtSigma1PtGlobCnoITS = NULL;
  if(fNTrackClasses>0) fProfPtPtSigma1PtGlobSt     = (TProfile*)f->Get("fProfPtPtSigma1PtGlobSt");
  if(fNTrackClasses>1) fProfPtPtSigma1PtGlobCnoSPD = (TProfile*)f->Get("fProfPtPtSigma1PtGlobCnoSPD");
  if(fNTrackClasses>2) fProfPtPtSigma1PtGlobCnoITS = (TProfile*)f->Get("fProfPtPtSigma1PtGlobCnoITS");

  SetSmearResolution(kTRUE);
  SetMomentumResolutionHybrid(fProfPtPtSigma1PtGlobSt,fProfPtPtSigma1PtGlobCnoSPD,fProfPtPtSigma1PtGlobCnoITS);
}

//________________________________________________________________________
void AliJetFastSimulation::LoadTrEfficiencyRootFileFromOADB() {

   if (!gGrid && fPathTrPtResolution.Contains("alien://")) {
     AliInfo("Trying to connect to AliEn ...");
     TGrid::Connect("alien://");
   }

  TFile *f = TFile::Open(fPathTrEfficiency.Data());
  if(!f)return;
  TH1D *hEffPosGlobSt     = NULL;
  TH1D *hEffPosGlobCnoSPD = NULL;
  TH1D *hEffPosGlobCnoITS = NULL;
  if(fNTrackClasses>0) hEffPosGlobSt = (TH1D*)f->Get("hEffPosGlobSt");
  if(fNTrackClasses>1) hEffPosGlobCnoSPD = (TH1D*)f->Get("hEffPosGlobCnoSPD");
  if(fNTrackClasses>2) hEffPosGlobCnoITS = (TH1D*)f->Get("hEffPosGlobCnoITS");

  SetDiceEfficiency(kTRUE);
  SetEfficiencyHybrid(hEffPosGlobSt,hEffPosGlobCnoSPD,hEffPosGlobCnoITS);
}

//________________________________________________________________________
void AliJetFastSimulation::SetMomentumResolutionHybrid(TProfile *p1, TProfile *p2, TProfile *p3) {
  //
  // set mom res profiles
  //
  if(fMomResH1) delete fMomResH1;
  if(fMomResH2) delete fMomResH2;
  if(fMomResH3) delete fMomResH3;
  
  if(p1) fMomResH1 = new TProfile(*p1);//(TProfile*)p1->Clone("fMomResH1");
  if(p2) fMomResH2 = new TProfile(*p2);//(TProfile*)p2->Clone("fMomResH2");
  if(p3) fMomResH3 = new TProfile(*p3);//(TProfile*)p3->Clone("fMomResH3");
}

//________________________________________________________________________
void AliJetFastSimulation:: SetEfficiencyHybrid(TH1 *h1, TH1 *h2, TH1 *h3) {
  //
  // set tracking efficiency histos
  //
  if(h1) fhEffH1 = (TH1*)h1->Clone("fhEffH1");
  if(h2) fhEffH2 = (TH1*)h2->Clone("fhEffH2");
  if(h3) fhEffH3 = (TH1*)h3->Clone("fhEffH3");
}

//________________________________________________________________________
void AliJetFastSimulation::FitMomentumResolution() {
  //
  // Fit linear function on momentum resolution at high pT
  //

  if(!fMomResH1Fit && fMomResH1) {
    fMomResH1Fit = new TF1("fMomResH1Fit","[0]+[1]*x",0.,200.);
    fMomResH1->Fit(fMomResH1Fit,"LL V0","",5.,30.);
    fMomResH1Fit ->SetRange(5.,100.);
  }

  if(!fMomResH2Fit && fMomResH2) {
    fMomResH2Fit = new TF1("fMomResH2Fit","[0]+[1]*x",0.,200.);
    fMomResH2->Fit(fMomResH2Fit,"LL V0","",5.,30.);
    fMomResH2Fit ->SetRange(5.,100.);
  }

  if(!fMomResH3Fit && fMomResH3) {
    fMomResH3Fit = new TF1("fMomResH3Fit","[0]+[1]*x",0.,200.);
    fMomResH3->Fit(fMomResH3Fit,"LL V0","",5.,30.);
    fMomResH3Fit ->SetRange(5.,100.);
  }

}


 AliJetFastSimulation.cxx:1
 AliJetFastSimulation.cxx:2
 AliJetFastSimulation.cxx:3
 AliJetFastSimulation.cxx:4
 AliJetFastSimulation.cxx:5
 AliJetFastSimulation.cxx:6
 AliJetFastSimulation.cxx:7
 AliJetFastSimulation.cxx:8
 AliJetFastSimulation.cxx:9
 AliJetFastSimulation.cxx:10
 AliJetFastSimulation.cxx:11
 AliJetFastSimulation.cxx:12
 AliJetFastSimulation.cxx:13
 AliJetFastSimulation.cxx:14
 AliJetFastSimulation.cxx:15
 AliJetFastSimulation.cxx:16
 AliJetFastSimulation.cxx:17
 AliJetFastSimulation.cxx:18
 AliJetFastSimulation.cxx:19
 AliJetFastSimulation.cxx:20
 AliJetFastSimulation.cxx:21
 AliJetFastSimulation.cxx:22
 AliJetFastSimulation.cxx:23
 AliJetFastSimulation.cxx:24
 AliJetFastSimulation.cxx:25
 AliJetFastSimulation.cxx:26
 AliJetFastSimulation.cxx:27
 AliJetFastSimulation.cxx:28
 AliJetFastSimulation.cxx:29
 AliJetFastSimulation.cxx:30
 AliJetFastSimulation.cxx:31
 AliJetFastSimulation.cxx:32
 AliJetFastSimulation.cxx:33
 AliJetFastSimulation.cxx:34
 AliJetFastSimulation.cxx:35
 AliJetFastSimulation.cxx:36
 AliJetFastSimulation.cxx:37
 AliJetFastSimulation.cxx:38
 AliJetFastSimulation.cxx:39
 AliJetFastSimulation.cxx:40
 AliJetFastSimulation.cxx:41
 AliJetFastSimulation.cxx:42
 AliJetFastSimulation.cxx:43
 AliJetFastSimulation.cxx:44
 AliJetFastSimulation.cxx:45
 AliJetFastSimulation.cxx:46
 AliJetFastSimulation.cxx:47
 AliJetFastSimulation.cxx:48
 AliJetFastSimulation.cxx:49
 AliJetFastSimulation.cxx:50
 AliJetFastSimulation.cxx:51
 AliJetFastSimulation.cxx:52
 AliJetFastSimulation.cxx:53
 AliJetFastSimulation.cxx:54
 AliJetFastSimulation.cxx:55
 AliJetFastSimulation.cxx:56
 AliJetFastSimulation.cxx:57
 AliJetFastSimulation.cxx:58
 AliJetFastSimulation.cxx:59
 AliJetFastSimulation.cxx:60
 AliJetFastSimulation.cxx:61
 AliJetFastSimulation.cxx:62
 AliJetFastSimulation.cxx:63
 AliJetFastSimulation.cxx:64
 AliJetFastSimulation.cxx:65
 AliJetFastSimulation.cxx:66
 AliJetFastSimulation.cxx:67
 AliJetFastSimulation.cxx:68
 AliJetFastSimulation.cxx:69
 AliJetFastSimulation.cxx:70
 AliJetFastSimulation.cxx:71
 AliJetFastSimulation.cxx:72
 AliJetFastSimulation.cxx:73
 AliJetFastSimulation.cxx:74
 AliJetFastSimulation.cxx:75
 AliJetFastSimulation.cxx:76
 AliJetFastSimulation.cxx:77
 AliJetFastSimulation.cxx:78
 AliJetFastSimulation.cxx:79
 AliJetFastSimulation.cxx:80
 AliJetFastSimulation.cxx:81
 AliJetFastSimulation.cxx:82
 AliJetFastSimulation.cxx:83
 AliJetFastSimulation.cxx:84
 AliJetFastSimulation.cxx:85
 AliJetFastSimulation.cxx:86
 AliJetFastSimulation.cxx:87
 AliJetFastSimulation.cxx:88
 AliJetFastSimulation.cxx:89
 AliJetFastSimulation.cxx:90
 AliJetFastSimulation.cxx:91
 AliJetFastSimulation.cxx:92
 AliJetFastSimulation.cxx:93
 AliJetFastSimulation.cxx:94
 AliJetFastSimulation.cxx:95
 AliJetFastSimulation.cxx:96
 AliJetFastSimulation.cxx:97
 AliJetFastSimulation.cxx:98
 AliJetFastSimulation.cxx:99
 AliJetFastSimulation.cxx:100
 AliJetFastSimulation.cxx:101
 AliJetFastSimulation.cxx:102
 AliJetFastSimulation.cxx:103
 AliJetFastSimulation.cxx:104
 AliJetFastSimulation.cxx:105
 AliJetFastSimulation.cxx:106
 AliJetFastSimulation.cxx:107
 AliJetFastSimulation.cxx:108
 AliJetFastSimulation.cxx:109
 AliJetFastSimulation.cxx:110
 AliJetFastSimulation.cxx:111
 AliJetFastSimulation.cxx:112
 AliJetFastSimulation.cxx:113
 AliJetFastSimulation.cxx:114
 AliJetFastSimulation.cxx:115
 AliJetFastSimulation.cxx:116
 AliJetFastSimulation.cxx:117
 AliJetFastSimulation.cxx:118
 AliJetFastSimulation.cxx:119
 AliJetFastSimulation.cxx:120
 AliJetFastSimulation.cxx:121
 AliJetFastSimulation.cxx:122
 AliJetFastSimulation.cxx:123
 AliJetFastSimulation.cxx:124
 AliJetFastSimulation.cxx:125
 AliJetFastSimulation.cxx:126
 AliJetFastSimulation.cxx:127
 AliJetFastSimulation.cxx:128
 AliJetFastSimulation.cxx:129
 AliJetFastSimulation.cxx:130
 AliJetFastSimulation.cxx:131
 AliJetFastSimulation.cxx:132
 AliJetFastSimulation.cxx:133
 AliJetFastSimulation.cxx:134
 AliJetFastSimulation.cxx:135
 AliJetFastSimulation.cxx:136
 AliJetFastSimulation.cxx:137
 AliJetFastSimulation.cxx:138
 AliJetFastSimulation.cxx:139
 AliJetFastSimulation.cxx:140
 AliJetFastSimulation.cxx:141
 AliJetFastSimulation.cxx:142
 AliJetFastSimulation.cxx:143
 AliJetFastSimulation.cxx:144
 AliJetFastSimulation.cxx:145
 AliJetFastSimulation.cxx:146
 AliJetFastSimulation.cxx:147
 AliJetFastSimulation.cxx:148
 AliJetFastSimulation.cxx:149
 AliJetFastSimulation.cxx:150
 AliJetFastSimulation.cxx:151
 AliJetFastSimulation.cxx:152
 AliJetFastSimulation.cxx:153
 AliJetFastSimulation.cxx:154
 AliJetFastSimulation.cxx:155
 AliJetFastSimulation.cxx:156
 AliJetFastSimulation.cxx:157
 AliJetFastSimulation.cxx:158
 AliJetFastSimulation.cxx:159
 AliJetFastSimulation.cxx:160
 AliJetFastSimulation.cxx:161
 AliJetFastSimulation.cxx:162
 AliJetFastSimulation.cxx:163
 AliJetFastSimulation.cxx:164
 AliJetFastSimulation.cxx:165
 AliJetFastSimulation.cxx:166
 AliJetFastSimulation.cxx:167
 AliJetFastSimulation.cxx:168
 AliJetFastSimulation.cxx:169
 AliJetFastSimulation.cxx:170
 AliJetFastSimulation.cxx:171
 AliJetFastSimulation.cxx:172
 AliJetFastSimulation.cxx:173
 AliJetFastSimulation.cxx:174
 AliJetFastSimulation.cxx:175
 AliJetFastSimulation.cxx:176
 AliJetFastSimulation.cxx:177
 AliJetFastSimulation.cxx:178
 AliJetFastSimulation.cxx:179
 AliJetFastSimulation.cxx:180
 AliJetFastSimulation.cxx:181
 AliJetFastSimulation.cxx:182
 AliJetFastSimulation.cxx:183
 AliJetFastSimulation.cxx:184
 AliJetFastSimulation.cxx:185
 AliJetFastSimulation.cxx:186
 AliJetFastSimulation.cxx:187
 AliJetFastSimulation.cxx:188
 AliJetFastSimulation.cxx:189
 AliJetFastSimulation.cxx:190
 AliJetFastSimulation.cxx:191
 AliJetFastSimulation.cxx:192
 AliJetFastSimulation.cxx:193
 AliJetFastSimulation.cxx:194
 AliJetFastSimulation.cxx:195
 AliJetFastSimulation.cxx:196
 AliJetFastSimulation.cxx:197
 AliJetFastSimulation.cxx:198
 AliJetFastSimulation.cxx:199
 AliJetFastSimulation.cxx:200
 AliJetFastSimulation.cxx:201
 AliJetFastSimulation.cxx:202
 AliJetFastSimulation.cxx:203
 AliJetFastSimulation.cxx:204
 AliJetFastSimulation.cxx:205
 AliJetFastSimulation.cxx:206
 AliJetFastSimulation.cxx:207
 AliJetFastSimulation.cxx:208
 AliJetFastSimulation.cxx:209
 AliJetFastSimulation.cxx:210
 AliJetFastSimulation.cxx:211
 AliJetFastSimulation.cxx:212
 AliJetFastSimulation.cxx:213
 AliJetFastSimulation.cxx:214
 AliJetFastSimulation.cxx:215
 AliJetFastSimulation.cxx:216
 AliJetFastSimulation.cxx:217
 AliJetFastSimulation.cxx:218
 AliJetFastSimulation.cxx:219
 AliJetFastSimulation.cxx:220
 AliJetFastSimulation.cxx:221
 AliJetFastSimulation.cxx:222
 AliJetFastSimulation.cxx:223
 AliJetFastSimulation.cxx:224
 AliJetFastSimulation.cxx:225
 AliJetFastSimulation.cxx:226
 AliJetFastSimulation.cxx:227
 AliJetFastSimulation.cxx:228
 AliJetFastSimulation.cxx:229
 AliJetFastSimulation.cxx:230
 AliJetFastSimulation.cxx:231
 AliJetFastSimulation.cxx:232
 AliJetFastSimulation.cxx:233
 AliJetFastSimulation.cxx:234
 AliJetFastSimulation.cxx:235
 AliJetFastSimulation.cxx:236
 AliJetFastSimulation.cxx:237
 AliJetFastSimulation.cxx:238
 AliJetFastSimulation.cxx:239
 AliJetFastSimulation.cxx:240
 AliJetFastSimulation.cxx:241
 AliJetFastSimulation.cxx:242
 AliJetFastSimulation.cxx:243
 AliJetFastSimulation.cxx:244
 AliJetFastSimulation.cxx:245
 AliJetFastSimulation.cxx:246
 AliJetFastSimulation.cxx:247
 AliJetFastSimulation.cxx:248
 AliJetFastSimulation.cxx:249
 AliJetFastSimulation.cxx:250
 AliJetFastSimulation.cxx:251
 AliJetFastSimulation.cxx:252
 AliJetFastSimulation.cxx:253
 AliJetFastSimulation.cxx:254
 AliJetFastSimulation.cxx:255
 AliJetFastSimulation.cxx:256
 AliJetFastSimulation.cxx:257
 AliJetFastSimulation.cxx:258
 AliJetFastSimulation.cxx:259
 AliJetFastSimulation.cxx:260
 AliJetFastSimulation.cxx:261
 AliJetFastSimulation.cxx:262
 AliJetFastSimulation.cxx:263
 AliJetFastSimulation.cxx:264
 AliJetFastSimulation.cxx:265
 AliJetFastSimulation.cxx:266
 AliJetFastSimulation.cxx:267
 AliJetFastSimulation.cxx:268
 AliJetFastSimulation.cxx:269
 AliJetFastSimulation.cxx:270
 AliJetFastSimulation.cxx:271
 AliJetFastSimulation.cxx:272
 AliJetFastSimulation.cxx:273
 AliJetFastSimulation.cxx:274
 AliJetFastSimulation.cxx:275
 AliJetFastSimulation.cxx:276
 AliJetFastSimulation.cxx:277
 AliJetFastSimulation.cxx:278
 AliJetFastSimulation.cxx:279
 AliJetFastSimulation.cxx:280
 AliJetFastSimulation.cxx:281
 AliJetFastSimulation.cxx:282
 AliJetFastSimulation.cxx:283
 AliJetFastSimulation.cxx:284
 AliJetFastSimulation.cxx:285
 AliJetFastSimulation.cxx:286
 AliJetFastSimulation.cxx:287
 AliJetFastSimulation.cxx:288
 AliJetFastSimulation.cxx:289
 AliJetFastSimulation.cxx:290
 AliJetFastSimulation.cxx:291
 AliJetFastSimulation.cxx:292
 AliJetFastSimulation.cxx:293
 AliJetFastSimulation.cxx:294
 AliJetFastSimulation.cxx:295
 AliJetFastSimulation.cxx:296
 AliJetFastSimulation.cxx:297
 AliJetFastSimulation.cxx:298
 AliJetFastSimulation.cxx:299
 AliJetFastSimulation.cxx:300
 AliJetFastSimulation.cxx:301
 AliJetFastSimulation.cxx:302
 AliJetFastSimulation.cxx:303
 AliJetFastSimulation.cxx:304
 AliJetFastSimulation.cxx:305
 AliJetFastSimulation.cxx:306
 AliJetFastSimulation.cxx:307
 AliJetFastSimulation.cxx:308
 AliJetFastSimulation.cxx:309
 AliJetFastSimulation.cxx:310
 AliJetFastSimulation.cxx:311
 AliJetFastSimulation.cxx:312
 AliJetFastSimulation.cxx:313
 AliJetFastSimulation.cxx:314
 AliJetFastSimulation.cxx:315
 AliJetFastSimulation.cxx:316
 AliJetFastSimulation.cxx:317
 AliJetFastSimulation.cxx:318
 AliJetFastSimulation.cxx:319
 AliJetFastSimulation.cxx:320
 AliJetFastSimulation.cxx:321
 AliJetFastSimulation.cxx:322
 AliJetFastSimulation.cxx:323
 AliJetFastSimulation.cxx:324
 AliJetFastSimulation.cxx:325
 AliJetFastSimulation.cxx:326
 AliJetFastSimulation.cxx:327
 AliJetFastSimulation.cxx:328
 AliJetFastSimulation.cxx:329
 AliJetFastSimulation.cxx:330
 AliJetFastSimulation.cxx:331
 AliJetFastSimulation.cxx:332
 AliJetFastSimulation.cxx:333
 AliJetFastSimulation.cxx:334
 AliJetFastSimulation.cxx:335
 AliJetFastSimulation.cxx:336
 AliJetFastSimulation.cxx:337
 AliJetFastSimulation.cxx:338
 AliJetFastSimulation.cxx:339
 AliJetFastSimulation.cxx:340
 AliJetFastSimulation.cxx:341
 AliJetFastSimulation.cxx:342
 AliJetFastSimulation.cxx:343
 AliJetFastSimulation.cxx:344
 AliJetFastSimulation.cxx:345
 AliJetFastSimulation.cxx:346
 AliJetFastSimulation.cxx:347
 AliJetFastSimulation.cxx:348
 AliJetFastSimulation.cxx:349
 AliJetFastSimulation.cxx:350
 AliJetFastSimulation.cxx:351
 AliJetFastSimulation.cxx:352
 AliJetFastSimulation.cxx:353
 AliJetFastSimulation.cxx:354
 AliJetFastSimulation.cxx:355
 AliJetFastSimulation.cxx:356
 AliJetFastSimulation.cxx:357
 AliJetFastSimulation.cxx:358
 AliJetFastSimulation.cxx:359
 AliJetFastSimulation.cxx:360
 AliJetFastSimulation.cxx:361
 AliJetFastSimulation.cxx:362
 AliJetFastSimulation.cxx:363
 AliJetFastSimulation.cxx:364
 AliJetFastSimulation.cxx:365
 AliJetFastSimulation.cxx:366
 AliJetFastSimulation.cxx:367
 AliJetFastSimulation.cxx:368
 AliJetFastSimulation.cxx:369
 AliJetFastSimulation.cxx:370
 AliJetFastSimulation.cxx:371
 AliJetFastSimulation.cxx:372
 AliJetFastSimulation.cxx:373
 AliJetFastSimulation.cxx:374
 AliJetFastSimulation.cxx:375
 AliJetFastSimulation.cxx:376
 AliJetFastSimulation.cxx:377
 AliJetFastSimulation.cxx:378
 AliJetFastSimulation.cxx:379
 AliJetFastSimulation.cxx:380
 AliJetFastSimulation.cxx:381
 AliJetFastSimulation.cxx:382
 AliJetFastSimulation.cxx:383
 AliJetFastSimulation.cxx:384
 AliJetFastSimulation.cxx:385
 AliJetFastSimulation.cxx:386
 AliJetFastSimulation.cxx:387
 AliJetFastSimulation.cxx:388
 AliJetFastSimulation.cxx:389
 AliJetFastSimulation.cxx:390
 AliJetFastSimulation.cxx:391
 AliJetFastSimulation.cxx:392
 AliJetFastSimulation.cxx:393
 AliJetFastSimulation.cxx:394
 AliJetFastSimulation.cxx:395
 AliJetFastSimulation.cxx:396
 AliJetFastSimulation.cxx:397
 AliJetFastSimulation.cxx:398
 AliJetFastSimulation.cxx:399
 AliJetFastSimulation.cxx:400
 AliJetFastSimulation.cxx:401
 AliJetFastSimulation.cxx:402
 AliJetFastSimulation.cxx:403
 AliJetFastSimulation.cxx:404
 AliJetFastSimulation.cxx:405
 AliJetFastSimulation.cxx:406
 AliJetFastSimulation.cxx:407
 AliJetFastSimulation.cxx:408
 AliJetFastSimulation.cxx:409
 AliJetFastSimulation.cxx:410
 AliJetFastSimulation.cxx:411
 AliJetFastSimulation.cxx:412
 AliJetFastSimulation.cxx:413
 AliJetFastSimulation.cxx:414