1 /**************************************************************************
2 * Copyright(c) 1998-2007, 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 **************************************************************************/
18 //-------------------------------------------------------------------------
19 // AOD class to store tracklets
20 // Author: Jan Fiete Grosse-Oetringhaus, CERN
21 // Class created from AliMultiplicity
22 //-------------------------------------------------------------------------
25 #include "AliAODTracklets.h"
27 ClassImp(AliAODTracklets)
29 AliAODTracklets::AliAODTracklets() : AliVMultiplicity(), fNTracks(0), fTheta(0), fPhi(0), fDeltaPhi(0), fLabels(0), fLabelsL2(0)
31 // default constructor
34 AliAODTracklets::AliAODTracklets(const char* name, const char* title) : AliVMultiplicity(name, title), fNTracks(0), fTheta(0), fPhi(0), fDeltaPhi(0), fLabels(0), fLabelsL2(0)
39 AliAODTracklets::AliAODTracklets(const AliAODTracklets& tracklet) :
40 AliVMultiplicity(tracklet),
41 fNTracks(tracklet.fNTracks),
49 fTheta = new Double32_t[fNTracks];
50 fPhi = new Double32_t[fNTracks];
51 fDeltaPhi = new Double32_t[fNTracks];
52 fLabels = new Int_t[fNTracks];
53 fLabelsL2 = new Int_t[fNTracks];
54 for (Int_t i = 0; i < fNTracks; i++) {
55 fTheta[i] = tracklet.fTheta[i];
56 fPhi[i] = tracklet.fPhi[i];
57 fDeltaPhi[i] = tracklet.fDeltaPhi[i];
58 fLabels[i] = tracklet.fLabels[i];
59 fLabelsL2[i] = tracklet.fLabelsL2[i];
63 AliAODTracklets& AliAODTracklets::operator=(const AliAODTracklets& tracklet)
65 // Assignment operator
66 if(&tracklet == this) return *this;
67 AliVMultiplicity::operator=(tracklet);
68 if(fNTracks!=tracklet.fNTracks){
69 fNTracks = tracklet.fNTracks;
70 CreateContainer(fNTracks);
72 for (Int_t i = 0; i < fNTracks; i++) {
73 fTheta[i] = tracklet.fTheta[i];
74 fPhi[i] = tracklet.fPhi[i];
75 fDeltaPhi[i] = tracklet.fDeltaPhi[i];
76 fLabels[i] = tracklet.fLabels[i];
77 fLabelsL2[i] = tracklet.fLabelsL2[i];
82 void AliAODTracklets::CreateContainer(Int_t nTracks)
84 // function that creates container to store tracklets
95 fTheta = new Double32_t[fNTracks];
96 fPhi = new Double32_t[fNTracks];
97 fDeltaPhi = new Double32_t[fNTracks];
98 fLabels = new Int_t[fNTracks];
99 fLabelsL2 = new Int_t[fNTracks];
103 AliAODTracklets::~AliAODTracklets()
110 void AliAODTracklets::DeleteContainer()
112 // deletes allocated memory
146 Bool_t AliAODTracklets::SetTracklet(Int_t pos, Double32_t theta, Double32_t phi, Double32_t deltaPhi, Int_t labelL1, Int_t labelL2)
148 // Sets a tracklet at the given position
150 if (pos < 0 || pos >= fNTracks)
155 fDeltaPhi[pos] = deltaPhi;
156 fLabels[pos] = labelL1;
157 fLabelsL2[pos] = labelL2;
162 //______________________________________________________________________
163 void AliAODTracklets::Print(Option_t *opt) const
166 printf("N.tracklets: %4d | ScaleDThtSin2T:%s\n",fNTracks,GetScaleDThetaBySin2T() ? "ON":"OFF");
167 TString opts = opt; opts.ToLower();
169 if (opts.Contains("t")) {
170 for (int i=0;i<fNTracks;i++) {
171 printf("T#%3d| Eta:%+5.2f Th:%+6.3f Phi:%+6.3f DPhi:%+6.3f L1:%5d L2:%5d\n",
172 i,GetEta(i),fTheta[i],fPhi[i],fDeltaPhi[i],fLabels[i],fLabelsL2[i]);
178 //________________________________________________________________
179 void AliAODTracklets::SetLabel(Int_t i, Int_t layer,Int_t label)
182 if (i>=0 && i<fNTracks)
184 if(layer == 0) fLabels[i] = label;
185 else fLabelsL2[i] = label;
189 //________________________________________________________________
190 Int_t AliAODTracklets::GetLabel(Int_t i, Int_t layer) const
193 if (i>=0 && i<fNTracks)
195 return (layer == 0) ? fLabels[i] : fLabelsL2[i];
198 Error("GetLabel","Invalid track number %d",i); return -9999;
201 //________________________________________________________________
202 Double_t AliAODTracklets::GetTheta(Int_t i) const
205 if (i>=0 && i<fNTracks)
210 Error("GetTheta","Invalid track number %d",i); return -9999.;
213 //________________________________________________________________
214 Double_t AliAODTracklets::GetPhi(Int_t i) const
217 if (i>=0 && i<fNTracks)
222 Error("GetPhi","Invalid track number %d",i); return -9999.;
225 //________________________________________________________________
226 Double_t AliAODTracklets::GetDeltaPhi(Int_t i) const
228 // access delta phi's
229 if (i>=0 && i<fNTracks)
234 Error("GetDeltaPhi","Invalid track number %d",i); return -9999.;