]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/ITS/AliHLTITStracker.cxx
fixing warnings
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITStracker.cxx
CommitLineData
d6e2c707 1// $Id$
2
9582ea1a 3/**************************************************************************
4 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * *
6 * Author: The ALICE Off-line Project. *
7 * Contributors are mentioned in the code where appropriate. *
8 * *
9 * Permission to use, copy, modify and distribute this software and its *
10 * documentation strictly for non-commercial purposes is hereby granted *
11 * without fee, provided that the above copyright notice appears in all *
12 * copies and that both the copyright notice and this permission notice *
13 * appear in the supporting documentation. The authors make no claims *
14 * about the suitability of this software for any purpose. It is *
15 * provided "as is" without express or implied warranty. *
16 **************************************************************************/
17
18//-------------------------------------------------------------------------
19// Implementation of the HLT ITS tracker class
20// It reads AliITSclusterV2 clusters and HLT ESD tracks and creates
21// AliITStrackV2 tracks. For details, see also RunHLTITS.C macro.
22// Origin: Cvetan Cheshkov, CERN, Cvetan.Cheshkov@cern.ch
23//-------------------------------------------------------------------------
24
af885e0f 25#include "AliESDEvent.h"
d523f52c 26#include "AliESDtrack.h"
4aa41877 27#include "AliHLTITStrack.h"
28#include "AliHLTITStracker.h"
9582ea1a 29
4aa41877 30ClassImp(AliHLTITStracker)
9582ea1a 31
32static Int_t CorrectForDeadZoneMaterial(AliITStrackV2 *t) {
33 //--------------------------------------------------------------------
34 // Correction for the material between the TPC and the ITS
35 // (should it belong to the TPC code ?)
36 //--------------------------------------------------------------------
37 Double_t riw=80., diw=0.0053, x0iw=30; // TPC inner wall ?
38 Double_t rcd=61., dcd=0.0053, x0cd=30; // TPC "central drum" ?
39 Double_t yr=12.8, dr=0.03; // rods ?
40 Double_t zm=0.2, dm=0.40; // membrane
41 //Double_t rr=52., dr=0.19, x0r=24., yyr=7.77; //rails
42 Double_t rs=50., ds=0.001; // something belonging to the ITS (screen ?)
43
44 if (t->GetX() > riw) {
45 if (!t->PropagateTo(riw,diw,x0iw)) return 1;
46 if (TMath::Abs(t->GetY())>yr) t->CorrectForMaterial(dr);
47 if (TMath::Abs(t->GetZ())<zm) t->CorrectForMaterial(dm);
48 if (!t->PropagateTo(rcd,dcd,x0cd)) return 1;
49 //Double_t x,y,z; t->GetGlobalXYZat(rr,x,y,z);
50 //if (TMath::Abs(y)<yyr) t->PropagateTo(rr,dr,x0r);
51 if (!t->PropagateTo(rs,ds)) return 1;
52 } else if (t->GetX() < rs) {
53 if (!t->PropagateTo(rs,-ds)) return 1;
54 //Double_t x,y,z; t->GetGlobalXYZat(rr,x,y,z);
55 //if (TMath::Abs(y)<yyr) t->PropagateTo(rr,-dr,x0r);
56 if (!t->PropagateTo(rcd,-dcd,x0cd)) return 1;
57 if (!t->PropagateTo(riw+0.001,-diw,x0iw)) return 1;
58 } else {
59 // ::Error("CorrectForDeadZoneMaterial","track is already in the dead zone !");
60 return 1;
61 }
62
63 return 0;
64}
65
af885e0f 66Int_t AliHLTITStracker::Clusters2Tracks(AliESDEvent *event) {
9582ea1a 67 //--------------------------------------------------------------------
68 // This functions reconstructs HLT ITS tracks
69 //--------------------------------------------------------------------
70 TObjArray itsTracks(15000);
71
72 {/* Read HLT ESD tracks */
73 Int_t nentr;
f644512a 74 nentr=event->GetNumberOfTracks();
9582ea1a 75 Info("Clusters2Tracks", "Number of ESD HLT tracks: %d\n", nentr);
76 while (nentr--) {
77
f644512a 78 AliESDtrack *esd=event->GetTrack(nentr);
9582ea1a 79
4aa41877 80 AliHLTITStrack *t=0;
9582ea1a 81 try {
4aa41877 82 t=new AliHLTITStrack(*esd);
9582ea1a 83 } catch (const Char_t *msg) {
84 Warning("Clusters2Tracks",msg);
85 delete t;
86 continue;
87 }
6c94f330 88 if (TMath::Abs(t->GetD(GetX(),GetY()))>5) {
9582ea1a 89 delete t;
90 continue;
91 }
92
93 if (CorrectForDeadZoneMaterial(t)!=0) {
94 Warning("Clusters2Tracks",
95 "failed to correct for the material in the dead zone !\n");
96 delete t;
97 continue;
98 }
99 itsTracks.AddLast(t);
100 }
101 } /* End Read HLT ESD tracks */
102
103 itsTracks.Sort();
104 Int_t nentr=itsTracks.GetEntriesFast();
105 Info("Clusters2Tracks", "Number of Selected for tracking HLT ESD tracks: %d\n", nentr);
106
107 Int_t ntrk=0;
108 for (fPass=0; fPass<2; fPass++) {
109 Int_t &constraint=fConstraint[fPass]; if (constraint<0) continue;
110 for (Int_t i=0; i<nentr; i++) {
4aa41877 111 AliHLTITStrack *t=(AliHLTITStrack*)itsTracks.UncheckedAt(i);
9582ea1a 112 if (t==0) continue; //this track has been already tracked
113 Int_t tpcLabel=t->GetLabel(); //save the TPC track label
9582ea1a 114 ResetTrackToFollow(*t);
115 ResetBestTrack();
116
1be4423f 117 for (FollowProlongation(); fI<AliITSgeomTGeo::GetNLayers(); fI++) {
9582ea1a 118 while (TakeNextProlongation()) FollowProlongation();
119 }
120
121 if (fBestTrack.GetNumberOfClusters() == 0) continue;
122
123 if (fConstraint[fPass]) {
124 ResetTrackToFollow(*t);
125 if (!RefitAt(3.7, &fTrackToFollow, &fBestTrack)) continue;
126 ResetBestTrack();
3136129d 127 }
9582ea1a 128
3136129d 129 if (!fBestTrack.PropagateTo(3.,0.0028,65.19)) continue;
6c94f330 130 if (!fBestTrack.PropagateToVertex(event->GetVertex())) continue;
9582ea1a 131 fBestTrack.SetLabel(tpcLabel);
132 fBestTrack.CookdEdx();
133 CookLabel(&fBestTrack,0.); //For comparison only
f644512a 134 fBestTrack.UpdateESDtrack(AliESDtrack::kITSin);
d2af5f81 135 {
136 AliESDtrack *esdTrack =fBestTrack.GetESDtrack();
f7a1cc68 137 Double_t r[3]={0.,0.,0.};
d2af5f81 138 Double_t maxD=3.;
139 esdTrack->RelateToVertex(event->GetVertex(),GetBz(r),maxD);
140 }
9582ea1a 141 UseClusters(&fBestTrack);
142 delete itsTracks.RemoveAt(i);
143 ntrk++;
144 }
145 }
146
147 itsTracks.Delete();
148
149 Info("Clusters2Tracks","Number of prolonged tracks: %d\n",ntrk);
150
151 return 0;
152}
153
af885e0f 154Int_t AliHLTITStracker::PropagateBack(AliESDEvent *event) {
9582ea1a 155 //--------------------------------------------------------------------
156 // This functions propagates reconstructed ITS tracks back
157 //--------------------------------------------------------------------
f644512a 158 Int_t nentr=event->GetNumberOfTracks();
159 Info("PropagateBack", "The method is not yet implemented! %d\n", nentr);
9582ea1a 160 return 0;
161}
162
af885e0f 163Int_t AliHLTITStracker::RefitInward(AliESDEvent *event) {
9582ea1a 164 //--------------------------------------------------------------------
165 // This functions refits ITS tracks using the
166 // "inward propagated" TPC tracks
167 //--------------------------------------------------------------------
168
f644512a 169 Int_t nentr=event->GetNumberOfTracks();
9582ea1a 170 Info("RefitInward", "The method is not yet implemented! %d",nentr);
171 return 0;
172}