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

#include "AliJetModelMergeBranches.h"

#include <TClonesArray.h>
#include <TFolder.h>
#include <TLorentzVector.h>
#include <TParticle.h>
#include <TParticlePDG.h>
#include <TRandom3.h>
#include <TProfile.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(AliJetModelMergeBranches)

//________________________________________________________________________
AliJetModelMergeBranches::AliJetModelMergeBranches() : 
  AliJetModelBaseTask("AliJetModelMergeBranches"),
  fTracksMergeName(),
  fTracksMerge(0)
{
  // Default constructor.
  SetSuffix("Merged");
  SetCopyArray(kTRUE);
}

//________________________________________________________________________
AliJetModelMergeBranches::AliJetModelMergeBranches(const char *name) : 
  AliJetModelBaseTask(name),
  fTracksMergeName(),
  fTracksMerge(0)
{
  // Standard constructor.
  SetSuffix("Merged");
  SetCopyArray(kTRUE);
}

//________________________________________________________________________
AliJetModelMergeBranches::~AliJetModelMergeBranches()
{
  // Destructor
}

//________________________________________________________________________
Bool_t AliJetModelMergeBranches::ExecOnce() 
{
  // Exec only once.

  AliJetModelBaseTask::ExecOnce();
  
  if (!fTracksMergeName.IsNull()) {
    fTracksMerge = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksMergeName));
    if (!fTracksMerge) {
      AliWarning(Form("%s: Couldn't retrieve tracks with name %s!", GetName(), fTracksMergeName.Data()));
    }
    else if (!fTracksMerge->GetClass()->GetBaseClass("AliPicoTrack")) {
      AliError(Form("%s: Collection %s does not contain AliPicoTrack objects!", GetName(), fTracksMergeName.Data())); 
      fTracksMerge = 0;
      return kFALSE;
    }
  }
  
  return kTRUE;
}

//________________________________________________________________________
void AliJetModelMergeBranches::Run() 
{
  // Merge two branches into a new one

  CopyTracks();
  MergeTracks();
}

//________________________________________________________________________
void AliJetModelMergeBranches::MergeTracks()
{
  // Copy all the tracks in the new collection

  if (!fTracksMerge)
    return;

  const Int_t nTracks = fTracksMerge->GetEntriesFast();
  Int_t nCopiedTracks = fOutTracks->GetEntriesFast();
  for (Int_t i = 0; i < nTracks; ++i) {
    AliPicoTrack *picotrack = static_cast<AliPicoTrack*>(fTracksMerge->At(i));
    if (!picotrack)
      continue;
    AliPicoTrack *track = new ((*fOutTracks)[nCopiedTracks]) AliPicoTrack(*picotrack);
    track->SetBit(TObject::kBitMask,1);
    nCopiedTracks++;
  }
}
 AliJetModelMergeBranches.cxx:1
 AliJetModelMergeBranches.cxx:2
 AliJetModelMergeBranches.cxx:3
 AliJetModelMergeBranches.cxx:4
 AliJetModelMergeBranches.cxx:5
 AliJetModelMergeBranches.cxx:6
 AliJetModelMergeBranches.cxx:7
 AliJetModelMergeBranches.cxx:8
 AliJetModelMergeBranches.cxx:9
 AliJetModelMergeBranches.cxx:10
 AliJetModelMergeBranches.cxx:11
 AliJetModelMergeBranches.cxx:12
 AliJetModelMergeBranches.cxx:13
 AliJetModelMergeBranches.cxx:14
 AliJetModelMergeBranches.cxx:15
 AliJetModelMergeBranches.cxx:16
 AliJetModelMergeBranches.cxx:17
 AliJetModelMergeBranches.cxx:18
 AliJetModelMergeBranches.cxx:19
 AliJetModelMergeBranches.cxx:20
 AliJetModelMergeBranches.cxx:21
 AliJetModelMergeBranches.cxx:22
 AliJetModelMergeBranches.cxx:23
 AliJetModelMergeBranches.cxx:24
 AliJetModelMergeBranches.cxx:25
 AliJetModelMergeBranches.cxx:26
 AliJetModelMergeBranches.cxx:27
 AliJetModelMergeBranches.cxx:28
 AliJetModelMergeBranches.cxx:29
 AliJetModelMergeBranches.cxx:30
 AliJetModelMergeBranches.cxx:31
 AliJetModelMergeBranches.cxx:32
 AliJetModelMergeBranches.cxx:33
 AliJetModelMergeBranches.cxx:34
 AliJetModelMergeBranches.cxx:35
 AliJetModelMergeBranches.cxx:36
 AliJetModelMergeBranches.cxx:37
 AliJetModelMergeBranches.cxx:38
 AliJetModelMergeBranches.cxx:39
 AliJetModelMergeBranches.cxx:40
 AliJetModelMergeBranches.cxx:41
 AliJetModelMergeBranches.cxx:42
 AliJetModelMergeBranches.cxx:43
 AliJetModelMergeBranches.cxx:44
 AliJetModelMergeBranches.cxx:45
 AliJetModelMergeBranches.cxx:46
 AliJetModelMergeBranches.cxx:47
 AliJetModelMergeBranches.cxx:48
 AliJetModelMergeBranches.cxx:49
 AliJetModelMergeBranches.cxx:50
 AliJetModelMergeBranches.cxx:51
 AliJetModelMergeBranches.cxx:52
 AliJetModelMergeBranches.cxx:53
 AliJetModelMergeBranches.cxx:54
 AliJetModelMergeBranches.cxx:55
 AliJetModelMergeBranches.cxx:56
 AliJetModelMergeBranches.cxx:57
 AliJetModelMergeBranches.cxx:58
 AliJetModelMergeBranches.cxx:59
 AliJetModelMergeBranches.cxx:60
 AliJetModelMergeBranches.cxx:61
 AliJetModelMergeBranches.cxx:62
 AliJetModelMergeBranches.cxx:63
 AliJetModelMergeBranches.cxx:64
 AliJetModelMergeBranches.cxx:65
 AliJetModelMergeBranches.cxx:66
 AliJetModelMergeBranches.cxx:67
 AliJetModelMergeBranches.cxx:68
 AliJetModelMergeBranches.cxx:69
 AliJetModelMergeBranches.cxx:70
 AliJetModelMergeBranches.cxx:71
 AliJetModelMergeBranches.cxx:72
 AliJetModelMergeBranches.cxx:73
 AliJetModelMergeBranches.cxx:74
 AliJetModelMergeBranches.cxx:75
 AliJetModelMergeBranches.cxx:76
 AliJetModelMergeBranches.cxx:77
 AliJetModelMergeBranches.cxx:78
 AliJetModelMergeBranches.cxx:79
 AliJetModelMergeBranches.cxx:80
 AliJetModelMergeBranches.cxx:81
 AliJetModelMergeBranches.cxx:82
 AliJetModelMergeBranches.cxx:83
 AliJetModelMergeBranches.cxx:84
 AliJetModelMergeBranches.cxx:85
 AliJetModelMergeBranches.cxx:86
 AliJetModelMergeBranches.cxx:87
 AliJetModelMergeBranches.cxx:88
 AliJetModelMergeBranches.cxx:89
 AliJetModelMergeBranches.cxx:90
 AliJetModelMergeBranches.cxx:91
 AliJetModelMergeBranches.cxx:92
 AliJetModelMergeBranches.cxx:93
 AliJetModelMergeBranches.cxx:94
 AliJetModelMergeBranches.cxx:95
 AliJetModelMergeBranches.cxx:96
 AliJetModelMergeBranches.cxx:97
 AliJetModelMergeBranches.cxx:98
 AliJetModelMergeBranches.cxx:99
 AliJetModelMergeBranches.cxx:100
 AliJetModelMergeBranches.cxx:101
 AliJetModelMergeBranches.cxx:102
 AliJetModelMergeBranches.cxx:103
 AliJetModelMergeBranches.cxx:104
 AliJetModelMergeBranches.cxx:105
 AliJetModelMergeBranches.cxx:106
 AliJetModelMergeBranches.cxx:107
 AliJetModelMergeBranches.cxx:108
 AliJetModelMergeBranches.cxx:109
 AliJetModelMergeBranches.cxx:110
 AliJetModelMergeBranches.cxx:111