#include <TObjArray.h>
#include <TExMap.h>
#include <TProcessID.h>
#include <AliVTrack.h>
#include <AliESDtrack.h>
#include <AliAODTrack.h>
#include "AliDielectronEvent.h"
ClassImp(AliDielectronEvent)
AliDielectronEvent::AliDielectronEvent() :
TNamed(),
fArrTrackP(),
fArrTrackN(),
fArrVertex("AliAODVertex",10),
fArrPairs("AliKFParticle",0),
fNTracksP(0),
fNTracksN(0),
fIsAOD(kFALSE),
fEventData(),
fPID(0x0),
fPIDIndex(0)
{
}
AliDielectronEvent::AliDielectronEvent(const char* name, const char* title) :
TNamed(name, title),
fArrTrackP(),
fArrTrackN(),
fArrVertex("AliAODVertex",10),
fArrPairs("AliKFParticle",0),
fNTracksP(0),
fNTracksN(0),
fIsAOD(kFALSE),
fEventData(),
fPID(0x0),
fPIDIndex(0)
{
}
AliDielectronEvent::~AliDielectronEvent()
{
fArrTrackP.Delete();
fArrTrackN.Delete();
fArrVertex.Delete();
fArrPairs.Delete();
}
void AliDielectronEvent::SetTracks(const TObjArray &arrP, const TObjArray &arrN, const TObjArray &)
{
Clear();
fNTracksN=0;
fNTracksP=0;
if (fArrTrackP.GetSize()<arrP.GetSize()) {
fArrTrackP.Expand(arrP.GetSize());
}
if (fArrTrackN.GetSize()<arrN.GetSize()) {
fArrTrackN.Expand(arrN.GetSize());
}
TExMap mapStoredVertices;
fPIDIndex=TProcessID::GetPIDs()->IndexOf(fPID);
Int_t tracks=0;
for (Int_t itrack=0; itrack<arrP.GetEntriesFast(); ++itrack){
if (!fIsAOD){
AliESDtrack *track=dynamic_cast<AliESDtrack*>(arrP.At(itrack));
if (!track) continue;
new (fArrTrackP[tracks]) AliESDtrack(*track);
++tracks;
} else {
AliAODTrack *track=dynamic_cast<AliAODTrack*>(arrP.At(itrack));
if (!track) continue;
AliAODTrack *ctrack = new (fArrTrackP[tracks]) AliAODTrack(*track);
AliAODVertex *vtx=track->GetProdVertex();
AliAODVertex *cvertex = 0x0;
if (vtx){
cvertex = reinterpret_cast<AliAODVertex*>(mapStoredVertices.GetValue(reinterpret_cast<ULong64_t>(vtx)));
if (!cvertex) {
if (mapStoredVertices.Capacity()<=mapStoredVertices.GetSize()) mapStoredVertices.Expand(2*mapStoredVertices.GetSize());
if (fArrVertex.GetSize()<=fArrVertex.GetEntriesFast()) fArrVertex.Expand(2*fArrVertex.GetSize());
cvertex = new (fArrVertex[fArrVertex.GetEntriesFast()]) AliAODVertex(*vtx);
AssignID(cvertex);
mapStoredVertices.Add(reinterpret_cast<ULong64_t>(vtx),reinterpret_cast<ULong64_t>(cvertex));
}
}
ctrack->SetProdVertex(cvertex);
++tracks;
}
}
fNTracksP=tracks;
tracks=0;
for (Int_t itrack=0; itrack<arrN.GetEntriesFast(); ++itrack){
if (!fIsAOD){
AliESDtrack *track=dynamic_cast<AliESDtrack*>(arrN.At(itrack));
if (!track) continue;
new (fArrTrackN[tracks]) AliESDtrack(*track);
++tracks;
} else {
AliAODTrack *track=dynamic_cast<AliAODTrack*>(arrN.At(itrack));
if (!track) continue;
AliAODTrack *ctrack = new (fArrTrackN[tracks]) AliAODTrack(*track);
AliAODVertex *vtx=track->GetProdVertex();
AliAODVertex *cvertex = 0x0;
if (vtx){
cvertex = reinterpret_cast<AliAODVertex*>(mapStoredVertices.GetValue(reinterpret_cast<ULong64_t>(vtx)));
if (!cvertex) {
if (mapStoredVertices.Capacity()<=mapStoredVertices.GetSize()) mapStoredVertices.Expand(2*mapStoredVertices.GetSize());
if (fArrVertex.GetSize()<=fArrVertex.GetEntriesFast()) fArrVertex.Expand(2*fArrVertex.GetSize());
cvertex = new (fArrVertex[fArrVertex.GetEntriesFast()]) AliAODVertex(*vtx);
AssignID(cvertex);
mapStoredVertices.Add(reinterpret_cast<ULong64_t>(vtx),reinterpret_cast<ULong64_t>(cvertex));
}
}
ctrack->SetProdVertex(cvertex);
++tracks;
}
}
fNTracksN=tracks;
}
void AliDielectronEvent::Clear(Option_t *opt)
{
for (Int_t i=fArrTrackP.GetEntriesFast()-1; i>=0; --i){
delete fArrTrackP.RemoveAt(i);
}
for (Int_t i=fArrTrackN.GetEntriesFast()-1; i>=0; --i){
delete fArrTrackN.RemoveAt(i);
}
for (Int_t i=0; i<fArrVertex.GetEntriesFast(); ++i){
delete fArrVertex.RemoveAt(i);
}
fArrTrackP.ExpandCreateFast(1);
fArrTrackN.ExpandCreateFast(1);
fArrVertex.ExpandCreateFast(1);
fArrPairs.Clear(opt);
}
void AliDielectronEvent::SetAOD(Int_t size)
{
fArrTrackP.SetClass("AliAODTrack",size);
fArrTrackN.SetClass("AliAODTrack",size);
fIsAOD=kTRUE;
}
void AliDielectronEvent::SetESD()
{
fArrTrackP.SetClass("AliESDtrack",1000);
fArrTrackN.SetClass("AliESDtrack",1000);
fIsAOD=kFALSE;
}
void AliDielectronEvent::SetEventData(const Double_t data[AliDielectronVarManager::kNMaxValues])
{
for (Int_t i=AliDielectronVarManager::kPairMax; i<AliDielectronVarManager::kNMaxValues;++i) fEventData[i]=data[i];
}
void AliDielectronEvent::AssignID(TObject *obj)
{
UInt_t uid=1;
if (fPID->GetObjects()) uid=fPID->GetObjects()->GetEntriesFast();
uid+=(fPIDIndex<<24);
obj->SetBit(kIsReferenced);
obj->SetUniqueID(uid);
fPID->PutObjectWithID(obj);
}
AliDielectronEvent.cxx:10 AliDielectronEvent.cxx:11 AliDielectronEvent.cxx:12 AliDielectronEvent.cxx:13 AliDielectronEvent.cxx:14 AliDielectronEvent.cxx:15 AliDielectronEvent.cxx:16 AliDielectronEvent.cxx:17 AliDielectronEvent.cxx:18 AliDielectronEvent.cxx:19 AliDielectronEvent.cxx:20 AliDielectronEvent.cxx:21 AliDielectronEvent.cxx:22 AliDielectronEvent.cxx:23 AliDielectronEvent.cxx:24 AliDielectronEvent.cxx:25 AliDielectronEvent.cxx:26 AliDielectronEvent.cxx:27 AliDielectronEvent.cxx:28 AliDielectronEvent.cxx:29 AliDielectronEvent.cxx:30 AliDielectronEvent.cxx:31 AliDielectronEvent.cxx:32 AliDielectronEvent.cxx:33 AliDielectronEvent.cxx:34 AliDielectronEvent.cxx:35 AliDielectronEvent.cxx:36 AliDielectronEvent.cxx:37 AliDielectronEvent.cxx:38 AliDielectronEvent.cxx:39 AliDielectronEvent.cxx:40 AliDielectronEvent.cxx:41 AliDielectronEvent.cxx:42 AliDielectronEvent.cxx:43 AliDielectronEvent.cxx:44 AliDielectronEvent.cxx:45 AliDielectronEvent.cxx:46 AliDielectronEvent.cxx:47 AliDielectronEvent.cxx:48 AliDielectronEvent.cxx:49 AliDielectronEvent.cxx:50 AliDielectronEvent.cxx:51 AliDielectronEvent.cxx:52 AliDielectronEvent.cxx:53 AliDielectronEvent.cxx:54 AliDielectronEvent.cxx:55 AliDielectronEvent.cxx:56 AliDielectronEvent.cxx:57 AliDielectronEvent.cxx:58 AliDielectronEvent.cxx:59 AliDielectronEvent.cxx:60 AliDielectronEvent.cxx:61 AliDielectronEvent.cxx:62 AliDielectronEvent.cxx:63 AliDielectronEvent.cxx:64 AliDielectronEvent.cxx:65 AliDielectronEvent.cxx:66 AliDielectronEvent.cxx:67 AliDielectronEvent.cxx:68 AliDielectronEvent.cxx:69 AliDielectronEvent.cxx:70 AliDielectronEvent.cxx:71 AliDielectronEvent.cxx:72 AliDielectronEvent.cxx:73 AliDielectronEvent.cxx:74 AliDielectronEvent.cxx:75 AliDielectronEvent.cxx:76 AliDielectronEvent.cxx:77 AliDielectronEvent.cxx:78 AliDielectronEvent.cxx:79 AliDielectronEvent.cxx:80 AliDielectronEvent.cxx:81 AliDielectronEvent.cxx:82 AliDielectronEvent.cxx:83 AliDielectronEvent.cxx:84 AliDielectronEvent.cxx:85 AliDielectronEvent.cxx:86 AliDielectronEvent.cxx:87 AliDielectronEvent.cxx:88 AliDielectronEvent.cxx:89 AliDielectronEvent.cxx:90 AliDielectronEvent.cxx:91 AliDielectronEvent.cxx:92 AliDielectronEvent.cxx:93 AliDielectronEvent.cxx:94 AliDielectronEvent.cxx:95 AliDielectronEvent.cxx:96 AliDielectronEvent.cxx:97 AliDielectronEvent.cxx:98 AliDielectronEvent.cxx:99 AliDielectronEvent.cxx:100 AliDielectronEvent.cxx:101 AliDielectronEvent.cxx:102 AliDielectronEvent.cxx:103 AliDielectronEvent.cxx:104 AliDielectronEvent.cxx:105 AliDielectronEvent.cxx:106 AliDielectronEvent.cxx:107 AliDielectronEvent.cxx:108 AliDielectronEvent.cxx:109 AliDielectronEvent.cxx:110 AliDielectronEvent.cxx:111 AliDielectronEvent.cxx:112 AliDielectronEvent.cxx:113 AliDielectronEvent.cxx:114 AliDielectronEvent.cxx:115 AliDielectronEvent.cxx:116 AliDielectronEvent.cxx:117 AliDielectronEvent.cxx:118 AliDielectronEvent.cxx:119 AliDielectronEvent.cxx:120 AliDielectronEvent.cxx:121 AliDielectronEvent.cxx:122 AliDielectronEvent.cxx:123 AliDielectronEvent.cxx:124 AliDielectronEvent.cxx:125 AliDielectronEvent.cxx:126 AliDielectronEvent.cxx:127 AliDielectronEvent.cxx:128 AliDielectronEvent.cxx:129 AliDielectronEvent.cxx:130 AliDielectronEvent.cxx:131 AliDielectronEvent.cxx:132 AliDielectronEvent.cxx:133 AliDielectronEvent.cxx:134 AliDielectronEvent.cxx:135 AliDielectronEvent.cxx:136 AliDielectronEvent.cxx:137 AliDielectronEvent.cxx:138 AliDielectronEvent.cxx:139 AliDielectronEvent.cxx:140 AliDielectronEvent.cxx:141 AliDielectronEvent.cxx:142 AliDielectronEvent.cxx:143 AliDielectronEvent.cxx:144 AliDielectronEvent.cxx:145 AliDielectronEvent.cxx:146 AliDielectronEvent.cxx:147 AliDielectronEvent.cxx:148 AliDielectronEvent.cxx:149 AliDielectronEvent.cxx:150 AliDielectronEvent.cxx:151 AliDielectronEvent.cxx:152 AliDielectronEvent.cxx:153 AliDielectronEvent.cxx:154 AliDielectronEvent.cxx:155 AliDielectronEvent.cxx:156 AliDielectronEvent.cxx:157 AliDielectronEvent.cxx:158 AliDielectronEvent.cxx:159 AliDielectronEvent.cxx:160 AliDielectronEvent.cxx:161 AliDielectronEvent.cxx:162 AliDielectronEvent.cxx:163 AliDielectronEvent.cxx:164 AliDielectronEvent.cxx:165 AliDielectronEvent.cxx:166 AliDielectronEvent.cxx:167 AliDielectronEvent.cxx:168 AliDielectronEvent.cxx:169 AliDielectronEvent.cxx:170 AliDielectronEvent.cxx:171 AliDielectronEvent.cxx:172 AliDielectronEvent.cxx:173 AliDielectronEvent.cxx:174 AliDielectronEvent.cxx:175 AliDielectronEvent.cxx:176 AliDielectronEvent.cxx:177 AliDielectronEvent.cxx:178 AliDielectronEvent.cxx:179 AliDielectronEvent.cxx:180 AliDielectronEvent.cxx:181 AliDielectronEvent.cxx:182 AliDielectronEvent.cxx:183 AliDielectronEvent.cxx:184 AliDielectronEvent.cxx:185 AliDielectronEvent.cxx:186 AliDielectronEvent.cxx:187 AliDielectronEvent.cxx:188 AliDielectronEvent.cxx:189 AliDielectronEvent.cxx:190 AliDielectronEvent.cxx:191 AliDielectronEvent.cxx:192 AliDielectronEvent.cxx:193 AliDielectronEvent.cxx:194 AliDielectronEvent.cxx:195 AliDielectronEvent.cxx:196 AliDielectronEvent.cxx:197 AliDielectronEvent.cxx:198 AliDielectronEvent.cxx:199 AliDielectronEvent.cxx:200 AliDielectronEvent.cxx:201 AliDielectronEvent.cxx:202 AliDielectronEvent.cxx:203 AliDielectronEvent.cxx:204 AliDielectronEvent.cxx:205 AliDielectronEvent.cxx:206 AliDielectronEvent.cxx:207 AliDielectronEvent.cxx:208 AliDielectronEvent.cxx:209 AliDielectronEvent.cxx:210 AliDielectronEvent.cxx:211 AliDielectronEvent.cxx:212 AliDielectronEvent.cxx:213 AliDielectronEvent.cxx:214 AliDielectronEvent.cxx:215 AliDielectronEvent.cxx:216 AliDielectronEvent.cxx:217 AliDielectronEvent.cxx:218 AliDielectronEvent.cxx:219 AliDielectronEvent.cxx:220 AliDielectronEvent.cxx:221 AliDielectronEvent.cxx:222 AliDielectronEvent.cxx:223 AliDielectronEvent.cxx:224 AliDielectronEvent.cxx:225 AliDielectronEvent.cxx:226 AliDielectronEvent.cxx:227 AliDielectronEvent.cxx:228 AliDielectronEvent.cxx:229 AliDielectronEvent.cxx:230 AliDielectronEvent.cxx:231 AliDielectronEvent.cxx:232 AliDielectronEvent.cxx:233 AliDielectronEvent.cxx:234 AliDielectronEvent.cxx:235 AliDielectronEvent.cxx:236 AliDielectronEvent.cxx:237 AliDielectronEvent.cxx:238 AliDielectronEvent.cxx:239 AliDielectronEvent.cxx:240 AliDielectronEvent.cxx:241 AliDielectronEvent.cxx:242 AliDielectronEvent.cxx:243 AliDielectronEvent.cxx:244 AliDielectronEvent.cxx:245 AliDielectronEvent.cxx:246 AliDielectronEvent.cxx:247 AliDielectronEvent.cxx:248 AliDielectronEvent.cxx:249 AliDielectronEvent.cxx:250 AliDielectronEvent.cxx:251 AliDielectronEvent.cxx:252 AliDielectronEvent.cxx:253 AliDielectronEvent.cxx:254 AliDielectronEvent.cxx:255 AliDielectronEvent.cxx:256 AliDielectronEvent.cxx:257 AliDielectronEvent.cxx:258