ROOT logo
// $Id$
//
// Jet model task to copy tracks while making small change
// - make particles massless
//
// Author: M. Verweij

#include "AliJetModelCopyTracks.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(AliJetModelCopyTracks)

//________________________________________________________________________
AliJetModelCopyTracks::AliJetModelCopyTracks() : 
AliAnalysisTaskEmcal("AliJetModelCopyTracks",kTRUE),
  fTracksOutName(""),
  fTracksOut(0x0),
  fParticleMass(kMassive),
  fHistPtOut(0)
{
  // Default constructor.
  SetMakeGeneralHistograms(kTRUE);
}

//________________________________________________________________________
AliJetModelCopyTracks::AliJetModelCopyTracks(const char *name) : 
  AliAnalysisTaskEmcal(name,kTRUE),
  fTracksOutName(""),
  fTracksOut(0x0),
  fParticleMass(kMassive),
  fHistPtOut(0)
{
  // Standard constructor.
  SetMakeGeneralHistograms(kTRUE);
}

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

}

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

  AliAnalysisTaskEmcal::ExecOnce();

  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 AliJetModelCopyTracks::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;
    }
  }

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

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


//________________________________________________________________________
Bool_t AliJetModelCopyTracks::Run() 
{
  CopyTracks();
  return kTRUE;
}

//________________________________________________________________________
void AliJetModelCopyTracks::CopyTracks()
{
  //Apply toy detector simulation to tracks
  fTracksOut->Delete();
  
  Int_t nt = 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;

    Double_t mass = picotrack->M();
    if(fParticleMass==kMassless) mass = 0.;
    if(fParticleMass==kPionMass) mass = 0.13957;

    AliPicoTrack *track = new ((*fTracksOut)[nt]) AliPicoTrack(picotrack->Pt(),
							       picotrack->Eta(),
							       picotrack->Phi(),
							       picotrack->Charge(),
							       picotrack->GetLabel(),
							       AliPicoTrack::GetTrackType(picotrack),
							       picotrack->GetTrackEtaOnEMCal(),
							       picotrack->GetTrackPhiOnEMCal(),
							       picotrack->GetTrackPtOnEMCal(),
							       picotrack->IsEMCAL(),
							       mass); 
    track->SetBit(TObject::kBitMask,1);
    fHistPtOut->Fill(track->Pt());
    nt++;
   }
}





 AliJetModelCopyTracks.cxx:1
 AliJetModelCopyTracks.cxx:2
 AliJetModelCopyTracks.cxx:3
 AliJetModelCopyTracks.cxx:4
 AliJetModelCopyTracks.cxx:5
 AliJetModelCopyTracks.cxx:6
 AliJetModelCopyTracks.cxx:7
 AliJetModelCopyTracks.cxx:8
 AliJetModelCopyTracks.cxx:9
 AliJetModelCopyTracks.cxx:10
 AliJetModelCopyTracks.cxx:11
 AliJetModelCopyTracks.cxx:12
 AliJetModelCopyTracks.cxx:13
 AliJetModelCopyTracks.cxx:14
 AliJetModelCopyTracks.cxx:15
 AliJetModelCopyTracks.cxx:16
 AliJetModelCopyTracks.cxx:17
 AliJetModelCopyTracks.cxx:18
 AliJetModelCopyTracks.cxx:19
 AliJetModelCopyTracks.cxx:20
 AliJetModelCopyTracks.cxx:21
 AliJetModelCopyTracks.cxx:22
 AliJetModelCopyTracks.cxx:23
 AliJetModelCopyTracks.cxx:24
 AliJetModelCopyTracks.cxx:25
 AliJetModelCopyTracks.cxx:26
 AliJetModelCopyTracks.cxx:27
 AliJetModelCopyTracks.cxx:28
 AliJetModelCopyTracks.cxx:29
 AliJetModelCopyTracks.cxx:30
 AliJetModelCopyTracks.cxx:31
 AliJetModelCopyTracks.cxx:32
 AliJetModelCopyTracks.cxx:33
 AliJetModelCopyTracks.cxx:34
 AliJetModelCopyTracks.cxx:35
 AliJetModelCopyTracks.cxx:36
 AliJetModelCopyTracks.cxx:37
 AliJetModelCopyTracks.cxx:38
 AliJetModelCopyTracks.cxx:39
 AliJetModelCopyTracks.cxx:40
 AliJetModelCopyTracks.cxx:41
 AliJetModelCopyTracks.cxx:42
 AliJetModelCopyTracks.cxx:43
 AliJetModelCopyTracks.cxx:44
 AliJetModelCopyTracks.cxx:45
 AliJetModelCopyTracks.cxx:46
 AliJetModelCopyTracks.cxx:47
 AliJetModelCopyTracks.cxx:48
 AliJetModelCopyTracks.cxx:49
 AliJetModelCopyTracks.cxx:50
 AliJetModelCopyTracks.cxx:51
 AliJetModelCopyTracks.cxx:52
 AliJetModelCopyTracks.cxx:53
 AliJetModelCopyTracks.cxx:54
 AliJetModelCopyTracks.cxx:55
 AliJetModelCopyTracks.cxx:56
 AliJetModelCopyTracks.cxx:57
 AliJetModelCopyTracks.cxx:58
 AliJetModelCopyTracks.cxx:59
 AliJetModelCopyTracks.cxx:60
 AliJetModelCopyTracks.cxx:61
 AliJetModelCopyTracks.cxx:62
 AliJetModelCopyTracks.cxx:63
 AliJetModelCopyTracks.cxx:64
 AliJetModelCopyTracks.cxx:65
 AliJetModelCopyTracks.cxx:66
 AliJetModelCopyTracks.cxx:67
 AliJetModelCopyTracks.cxx:68
 AliJetModelCopyTracks.cxx:69
 AliJetModelCopyTracks.cxx:70
 AliJetModelCopyTracks.cxx:71
 AliJetModelCopyTracks.cxx:72
 AliJetModelCopyTracks.cxx:73
 AliJetModelCopyTracks.cxx:74
 AliJetModelCopyTracks.cxx:75
 AliJetModelCopyTracks.cxx:76
 AliJetModelCopyTracks.cxx:77
 AliJetModelCopyTracks.cxx:78
 AliJetModelCopyTracks.cxx:79
 AliJetModelCopyTracks.cxx:80
 AliJetModelCopyTracks.cxx:81
 AliJetModelCopyTracks.cxx:82
 AliJetModelCopyTracks.cxx:83
 AliJetModelCopyTracks.cxx:84
 AliJetModelCopyTracks.cxx:85
 AliJetModelCopyTracks.cxx:86
 AliJetModelCopyTracks.cxx:87
 AliJetModelCopyTracks.cxx:88
 AliJetModelCopyTracks.cxx:89
 AliJetModelCopyTracks.cxx:90
 AliJetModelCopyTracks.cxx:91
 AliJetModelCopyTracks.cxx:92
 AliJetModelCopyTracks.cxx:93
 AliJetModelCopyTracks.cxx:94
 AliJetModelCopyTracks.cxx:95
 AliJetModelCopyTracks.cxx:96
 AliJetModelCopyTracks.cxx:97
 AliJetModelCopyTracks.cxx:98
 AliJetModelCopyTracks.cxx:99
 AliJetModelCopyTracks.cxx:100
 AliJetModelCopyTracks.cxx:101
 AliJetModelCopyTracks.cxx:102
 AliJetModelCopyTracks.cxx:103
 AliJetModelCopyTracks.cxx:104
 AliJetModelCopyTracks.cxx:105
 AliJetModelCopyTracks.cxx:106
 AliJetModelCopyTracks.cxx:107
 AliJetModelCopyTracks.cxx:108
 AliJetModelCopyTracks.cxx:109
 AliJetModelCopyTracks.cxx:110
 AliJetModelCopyTracks.cxx:111
 AliJetModelCopyTracks.cxx:112
 AliJetModelCopyTracks.cxx:113
 AliJetModelCopyTracks.cxx:114
 AliJetModelCopyTracks.cxx:115
 AliJetModelCopyTracks.cxx:116
 AliJetModelCopyTracks.cxx:117
 AliJetModelCopyTracks.cxx:118
 AliJetModelCopyTracks.cxx:119
 AliJetModelCopyTracks.cxx:120
 AliJetModelCopyTracks.cxx:121
 AliJetModelCopyTracks.cxx:122
 AliJetModelCopyTracks.cxx:123
 AliJetModelCopyTracks.cxx:124
 AliJetModelCopyTracks.cxx:125
 AliJetModelCopyTracks.cxx:126
 AliJetModelCopyTracks.cxx:127
 AliJetModelCopyTracks.cxx:128
 AliJetModelCopyTracks.cxx:129
 AliJetModelCopyTracks.cxx:130
 AliJetModelCopyTracks.cxx:131
 AliJetModelCopyTracks.cxx:132
 AliJetModelCopyTracks.cxx:133
 AliJetModelCopyTracks.cxx:134
 AliJetModelCopyTracks.cxx:135
 AliJetModelCopyTracks.cxx:136
 AliJetModelCopyTracks.cxx:137
 AliJetModelCopyTracks.cxx:138
 AliJetModelCopyTracks.cxx:139
 AliJetModelCopyTracks.cxx:140
 AliJetModelCopyTracks.cxx:141
 AliJetModelCopyTracks.cxx:142
 AliJetModelCopyTracks.cxx:143
 AliJetModelCopyTracks.cxx:144
 AliJetModelCopyTracks.cxx:145
 AliJetModelCopyTracks.cxx:146
 AliJetModelCopyTracks.cxx:147
 AliJetModelCopyTracks.cxx:148
 AliJetModelCopyTracks.cxx:149
 AliJetModelCopyTracks.cxx:150
 AliJetModelCopyTracks.cxx:151
 AliJetModelCopyTracks.cxx:152
 AliJetModelCopyTracks.cxx:153
 AliJetModelCopyTracks.cxx:154