1 /*************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 ///////////////////////////////////////////////////////////////////////////
17 // Dielectron Event //
26 ///////////////////////////////////////////////////////////////////////////
28 #include <TObjArray.h>
30 #include <AliVTrack.h>
31 #include <AliESDtrack.h>
32 #include <AliAODTrack.h>
34 #include "AliDielectronEvent.h"
36 ClassImp(AliDielectronEvent)
38 AliDielectronEvent::AliDielectronEvent() :
42 fArrVertexP("AliAODVertex",1000),
43 fArrVertexN("AliAODVertex",1000),
44 fArrPairs("AliKFParticle",0),
51 // Default Constructor
56 //______________________________________________
57 AliDielectronEvent::AliDielectronEvent(const char* name, const char* title) :
61 fArrVertexP("AliAODVertex",1000),
62 fArrVertexN("AliAODVertex",1000),
63 fArrPairs("AliKFParticle",0),
74 //______________________________________________
75 AliDielectronEvent::~AliDielectronEvent()
87 //______________________________________________
88 void AliDielectronEvent::SetTracks(const TObjArray &arrP, const TObjArray &arrN, const TObjArray &/*arrPairs*/)
91 // Setup AliKFParticles
92 // assumes that the objects in arrP and arrN are AliVTracks
95 //Clear out old entries before filling new ones
97 // we keep the tracks buffered to minimise new / delete operations
101 //check size of the arrays
102 if (fArrTrackP.GetSize()<arrP.GetSize()) {
103 fArrTrackP.Expand(arrP.GetSize());
104 fArrVertexP.Expand(arrP.GetSize());
106 if (fArrTrackN.GetSize()<arrN.GetSize()) {
107 fArrTrackN.Expand(arrN.GetSize());
108 fArrVertexN.Expand(arrN.GetSize());
113 for (Int_t itrack=0; itrack<arrP.GetEntriesFast(); ++itrack){
115 AliESDtrack *track=dynamic_cast<AliESDtrack*>(arrP.At(itrack));
116 if (!track) continue;
117 new (fArrTrackP[tracks]) AliESDtrack(*track);
120 AliAODTrack *track=dynamic_cast<AliAODTrack*>(arrP.At(itrack));
121 if (!track) continue;
123 new (fArrTrackP[tracks]) AliAODTrack(*track);
124 new (fArrVertexP[tracks]) AliAODVertex(*(track->GetProdVertex()));
131 for (Int_t itrack=0; itrack<arrN.GetEntriesFast(); ++itrack){
133 AliESDtrack *track=dynamic_cast<AliESDtrack*>(arrN.At(itrack));
134 if (!track) continue;
135 new (fArrTrackN[tracks]) AliESDtrack(*track);
138 AliAODTrack *track=dynamic_cast<AliAODTrack*>(arrN.At(itrack));
139 if (!track) continue;
141 new (fArrTrackN[tracks]) AliAODTrack(*track);
142 new (fArrVertexN[tracks]) AliAODVertex(*(track->GetProdVertex()));
151 //______________________________________________
152 void AliDielectronEvent::Clear(Option_t *opt)
157 // fArrTrackP.Clear(opt);
158 // fArrTrackN.Clear(opt);
160 for (Int_t i=fArrTrackP.GetEntriesFast()-1; i>=0; --i){
161 delete fArrTrackP.RemoveAt(i);
162 delete fArrVertexP.RemoveAt(i);
165 for (Int_t i=fArrTrackN.GetEntriesFast()-1; i>=0; --i){
166 delete fArrTrackN.RemoveAt(i);
167 delete fArrVertexN.RemoveAt(i);
170 fArrPairs.Clear(opt);
174 //______________________________________________
175 void AliDielectronEvent::SetAOD()
180 fArrTrackP.SetClass("AliAODTrack",1000);
181 fArrTrackN.SetClass("AliAODTrack",1000);
185 //______________________________________________
186 void AliDielectronEvent::SetESD()
191 fArrTrackP.SetClass("AliESDtrack",1000);
192 fArrTrackN.SetClass("AliESDtrack",1000);
196 //______________________________________________
197 void AliDielectronEvent::SetEventData(const Double_t data[AliDielectronVarManager::kNMaxValues])
200 // copy only evnet variables
202 for (Int_t i=AliDielectronVarManager::kPairMax; i<AliDielectronVarManager::kNMaxValues;++i) fEventData[i]=data[i];