]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/AliJetRandomizerTask.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetRandomizerTask.cxx
1 // $Id$
2 //
3 // Jet randomizer task.
4 //
5 // Author: S.Aiola, C.Loizides
6
7 #include <TClonesArray.h>
8 #include <TLorentzVector.h>
9 #include <TRandom3.h>
10
11 #include "AliAnalysisManager.h"
12 #include "AliVEvent.h"
13 #include "AliVCluster.h"
14 #include "AliEMCALDigit.h"
15 #include "AliEMCALRecPoint.h"
16 #include "AliPicoTrack.h"
17 #include "AliEMCALGeometry.h"
18 #include "AliLog.h"
19
20 #include "AliJetRandomizerTask.h"
21
22 ClassImp(AliJetRandomizerTask)
23
24 //________________________________________________________________________
25 AliJetRandomizerTask::AliJetRandomizerTask() : 
26   AliJetModelBaseTask("AliJetRandomizerTask"),
27   fRandomizeEta(0)
28 {
29   // Default constructor.
30
31   SetSuffix("Randomized");
32   SetMarkMC(0);
33 }
34
35 //________________________________________________________________________
36 AliJetRandomizerTask::AliJetRandomizerTask(const char *name) : 
37   AliJetModelBaseTask(name),
38   fRandomizeEta(0)
39 {
40   // Standard constructor.
41
42   SetSuffix("Randomized");
43   SetMarkMC(0);
44 }
45
46 //________________________________________________________________________
47 AliJetRandomizerTask::~AliJetRandomizerTask()
48 {
49   // Destructor
50 }
51
52 //________________________________________________________________________
53 void AliJetRandomizerTask::UserExec(Option_t *) 
54 {
55   // Execute per event.
56
57   if (!fCopyArray) {
58     AliWarning("fCopyArray == kFALSE not allowed for AliJetRandomizerTask, will set kTRUE");
59     fCopyArray = kTRUE;
60   }
61
62   if (!fIsInit) { 
63     ExecOnce();
64     fIsInit = 1;
65   }
66
67   Run();
68 }
69
70 //________________________________________________________________________
71 void AliJetRandomizerTask::Run() 
72 {
73   // Randomize particles.
74
75   Double_t eta = -999;
76
77   if (fNClusters > 0 && fOutClusters) {
78     const Int_t nClusters = fClusters->GetEntriesFast();
79     for (Int_t i = 0; i < nClusters; ++i) {
80       AliVCluster *cluster = dynamic_cast<AliVCluster*>(fClusters->At(i));
81       if (!cluster)
82         continue;
83       if (!cluster->IsEMCAL())
84         continue;
85
86       Float_t pos[3];
87       cluster->GetPosition(pos);
88       TVector3 clusVec(pos);
89       if (fRandomizeEta == 0)
90         eta = clusVec.Eta();
91       else if (fRandomizeEta == 2)
92         eta = -clusVec.Eta();
93       AddCluster(cluster->E(), eta);
94     }
95   }
96  
97   if (fNTracks > 0 && fOutTracks) {
98     const Int_t nTracks = fTracks->GetEntriesFast();
99     for (Int_t i = 0; i < nTracks; ++i) {
100       AliPicoTrack *track = dynamic_cast<AliPicoTrack*>(fTracks->At(i));
101       if (!track)
102         continue;
103       if (fRandomizeEta == 0)
104         eta = track->Eta();
105       else if (fRandomizeEta == 2)
106         eta = -track->Eta();
107       AddTrack(track->Pt(), eta);
108     }
109   }
110 }