ROOT logo
// $Id$
//
// Jet randomizer task.
//
// Author: S.Aiola, C.Loizides

#include <TClonesArray.h>
#include <TLorentzVector.h>
#include <TRandom3.h>

#include "AliAnalysisManager.h"
#include "AliVEvent.h"
#include "AliVCluster.h"
#include "AliEMCALDigit.h"
#include "AliEMCALRecPoint.h"
#include "AliPicoTrack.h"
#include "AliEMCALGeometry.h"
#include "AliLog.h"

#include "AliJetRandomizerTask.h"

ClassImp(AliJetRandomizerTask)

//________________________________________________________________________
AliJetRandomizerTask::AliJetRandomizerTask() : 
  AliJetModelBaseTask("AliJetRandomizerTask"),
  fRandomizeEta(0)
{
  // Default constructor.

  SetSuffix("Randomized");
  SetMarkMC(0);
}

//________________________________________________________________________
AliJetRandomizerTask::AliJetRandomizerTask(const char *name) : 
  AliJetModelBaseTask(name),
  fRandomizeEta(0)
{
  // Standard constructor.

  SetSuffix("Randomized");
  SetMarkMC(0);
}

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

//________________________________________________________________________
void AliJetRandomizerTask::UserExec(Option_t *) 
{
  // Execute per event.

  if (!fCopyArray) {
    AliWarning("fCopyArray == kFALSE not allowed for AliJetRandomizerTask, will set kTRUE");
    fCopyArray = kTRUE;
  }

  if (!fIsInit) { 
    ExecOnce();
    fIsInit = 1;
  }

  Run();
}

//________________________________________________________________________
void AliJetRandomizerTask::Run() 
{
  // Randomize particles.

  Double_t eta = -999;

  if (fNClusters > 0 && fOutClusters) {
    const Int_t nClusters = fClusters->GetEntriesFast();
    for (Int_t i = 0; i < nClusters; ++i) {
      AliVCluster *cluster = dynamic_cast<AliVCluster*>(fClusters->At(i));
      if (!cluster)
	continue;
      if (!cluster->IsEMCAL())
	continue;

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