1 /**************************************************************************
2 * Copyright(c) 1998-1999, 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 /* $Id: AliTRDtrackInfo.cxx 27496 2008-07-22 08:35:45Z cblume $ */
18 ////////////////////////////////////////////////////////////////////////////
20 // Reconstruction QA //
23 // Markus Fasel <M.Fasel@gsi.de> //
25 ////////////////////////////////////////////////////////////////////////////
27 #include "AliTrackReference.h"
28 #include "AliExternalTrackParam.h"
29 #include "AliTRDseedV1.h"
30 #include "AliTRDtrackV1.h"
35 #include "AliTRDtrackInfo.h"
37 ClassImp(AliTRDtrackInfo)
39 //___________________________________________________
40 AliTRDtrackInfo::AliTRDtrackInfo():
49 ,fTriggerClassName("")
54 // Default constructor
58 memset(fTrackRefs, 0, sizeof(AliTrackReference *) * 12);
61 //___________________________________________________
62 AliTRDtrackInfo::AliTRDtrackInfo(Int_t pdg):
71 ,fTriggerClassName("")
80 memset(fTrackRefs, 0, sizeof(AliTrackReference *) * 12);
83 //___________________________________________________
84 AliTRDtrackInfo::AliTRDtrackInfo(const AliTRDtrackInfo &trdInfo):
85 TObject((const TObject&)trdInfo)
87 ,fStatus(trdInfo.fStatus)
88 ,fTriggerCluster(trdInfo.fTriggerCluster)
90 ,fLabel(trdInfo.fLabel)
91 ,fNClusters(trdInfo.fNClusters)
92 ,fNTrackRefs(trdInfo.fNTrackRefs)
93 ,fTriggerClassName(trdInfo.fTriggerClassName)
101 memset(fTrackRefs, 0, sizeof(AliTrackReference *) * 12);
102 for(Int_t ien = 0; ien < 12; ien++){
103 if(trdInfo.fTrackRefs[ien])
104 fTrackRefs[ien] = new AliTrackReference(*(trdInfo.fTrackRefs[ien]));
106 if(trdInfo.fOP) fOP = new AliExternalTrackParam(*trdInfo.fOP);
107 if(trdInfo.fTRDtrack){
108 fTRDtrack = new AliTRDtrackV1(*trdInfo.fTRDtrack);
109 if(trdInfo.fTRDtrack->IsOwner()) fTRDtrack->SetOwner();
113 //___________________________________________________
114 AliTRDtrackInfo::~AliTRDtrackInfo()
121 for(Int_t ien = 0; ien < 12; ien++){
122 if(fTrackRefs[ien]) delete fTrackRefs[ien];
124 if(fTRDtrack) delete fTRDtrack;
128 //___________________________________________________
129 AliTRDtrackInfo& AliTRDtrackInfo::operator=(const AliTRDtrackInfo &trdInfo)
136 fStatus = trdInfo.fStatus;
138 fLabel = trdInfo.fLabel;
139 fNClusters = trdInfo.fNClusters;
140 fNTrackRefs = trdInfo.fNTrackRefs;
143 memset(fTrackRefs, 0, sizeof(AliTrackReference *) * 12);
144 for(Int_t ien = 0; ien < 12; ien++){
145 if(trdInfo.fTrackRefs[ien])
147 fTrackRefs[ien] = new AliTrackReference(*(trdInfo.fTrackRefs[ien]));
149 new(&fTrackRefs[ien]) AliTrackReference(*(trdInfo.fTrackRefs[ien]));
153 fOP = new AliExternalTrackParam(*trdInfo.fOP);
155 new(fOP) AliExternalTrackParam(*trdInfo.fOP);
157 if(trdInfo.fTRDtrack){
159 fTRDtrack = new AliTRDtrackV1(*trdInfo.fTRDtrack);
161 new(fTRDtrack) AliTRDtrackV1(*trdInfo.fTRDtrack);
162 if(trdInfo.fTRDtrack->IsOwner()) fTRDtrack->SetOwner();
168 //___________________________________________________
169 void AliTRDtrackInfo::Delete(const Option_t *)
181 if(fOP) delete fOP; fOP = 0x0;
182 if(fTRDtrack) delete fTRDtrack; fTRDtrack = 0x0;
183 for(Int_t ien = 0; ien < 12; ien++){
185 delete fTrackRefs[ien];
187 memset(fTrackRefs, 0, sizeof(AliTrackReference *) * 12);
191 //___________________________________________________
192 void AliTRDtrackInfo::SetTRDtrack(const AliTRDtrackV1 *track)
199 fTRDtrack = new AliTRDtrackV1(*track);
201 new(fTRDtrack)AliTRDtrackV1(*track);
202 fTRDtrack->SetOwner();
203 // Make a copy for the object in order to avoid ownership problems
206 //___________________________________________________
207 void AliTRDtrackInfo::AddTrackRef(const AliTrackReference *tref)
210 // Add track reference
213 if(fNTrackRefs >= 12){
217 // Make a copy for the object in order to avoid ownership problems
218 fTrackRefs[fNTrackRefs++] = new AliTrackReference(*tref);
221 //___________________________________________________
222 AliTRDseedV1* AliTRDtrackInfo::GetTracklet(Int_t idx) const
225 // Returns a tracklet
228 if(!fTRDtrack) return 0x0;
229 return idx < 6 ? const_cast<AliTRDseedV1 *>(fTRDtrack->GetTracklet(idx)) : 0x0;
232 //___________________________________________________
233 AliTrackReference * AliTRDtrackInfo::GetTrackRef(Int_t idx) const
236 // Returns a track reference
239 return idx < 12 ? fTrackRefs[idx] : 0x0;
242 //___________________________________________________
243 Int_t AliTRDtrackInfo::GetNumberOfClusters() const
246 // Returns the number of clusters
250 if(!fTRDtrack) return 0;
251 if(fTRDtrack->GetNumberOfTracklets() == 0) return n;
252 AliTRDseedV1 *tracklet = 0x0;
253 for(Int_t ip=0; ip<6; ip++){
254 if(!(tracklet = const_cast<AliTRDseedV1 *>(fTRDtrack->GetTracklet(ip)))) continue;
261 //___________________________________________________
262 void AliTRDtrackInfo::SetOuterParam(const AliExternalTrackParam *op)
265 // Set outer track parameters
269 if(fOP) new(fOP) AliExternalTrackParam(*op);
271 fOP = new AliExternalTrackParam(*op);
274 //___________________________________________________
275 Int_t AliTRDtrackInfo::GetNTracklets() const
278 // Return the number of tracklets
281 if(!fTRDtrack) return 0x0;
282 return fTRDtrack->GetNumberOfTracklets();