#include "AliTRDReconstructor.h"
#include "AliTRDtrackingSector.h"
#include "AliTRDtrackingChamber.h"
ClassImp(AliTRDtrackingSector)
AliTRDtrackingSector::AliTRDtrackingSector()
:fSector(-1)
,fN(0)
,fGeom(NULL)
{
memset(fChamber, 0, AliTRDgeometry::kNdets*sizeof(AliTRDtrackingChamber*));
memset(fStack, 0, AliTRDgeometry::kNlayer*sizeof(AliTRDtrackingChamber*));
memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));
memset(fX0, 0, AliTRDgeometry::kNlayer*sizeof(Float_t));
}
AliTRDtrackingSector::AliTRDtrackingSector(AliTRDgeometry *geo, Int_t gs)
:fSector(gs)
,fN(0)
,fGeom(geo)
{
memset(fChamber, 0, AliTRDgeometry::kNdets*sizeof(AliTRDtrackingChamber*));
memset(fStack, 0, AliTRDgeometry::kNlayer*sizeof(AliTRDtrackingChamber*));
memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));
memset(fX0, 0, AliTRDgeometry::kNlayer*sizeof(Float_t));
}
void AliTRDtrackingSector::Init(const AliTRDReconstructor *rec)
{
AliTRDchamberTimeBin *tb = NULL;
AliTRDtrackingChamber **tc = &fChamber[0];
for(Int_t ic = 0; (ic<AliTRDgeometry::kNdets) && (*tc); ic++, tc++){
for(Int_t itb=0; itb<AliTRDseedV1::kNtb; itb++){
if(!(tb = (*tc)->GetTB(itb))) continue;
tb->SetReconstructor(rec);
}
(*tc)->Build(fGeom, rec->IsHLT());
}
Int_t nl;
for(int il=0; il<AliTRDgeometry::kNlayer; il++){
fX0[il] = 0.; nl = 0;
for(int is=0; is<AliTRDgeometry::kNstack; is++){
Int_t idx = is*AliTRDgeometry::kNlayer + il;
if(fIndex[idx]<0) continue;
fX0[il] += GetChamber(fIndex[idx])->GetX();
nl++;
}
if(!nl){
continue;
}
fX0[il] /= Float_t(nl);
}
}
void AliTRDtrackingSector::Clear(const Option_t *opt)
{
AliTRDtrackingChamber **tc = &fChamber[0];
for(Int_t ich=0; ich<fN; ich++, tc++){
(*tc)->Clear(opt);
delete (*tc); (*tc) = NULL;
}
memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));
fN = 0;
}
AliTRDtrackingChamber* AliTRDtrackingSector::GetChamber(Int_t stack, Int_t layer, Bool_t build)
{
Int_t ch = stack*AliTRDgeometry::kNlayer + layer;
if(fIndex[ch] >= 0) return fChamber[Int_t(fIndex[ch])];
else if(!build) return NULL;
Int_t rch = ch;do rch--; while(rch>=0 && fIndex[rch]<0);
fIndex[ch] = rch >=0 ? fIndex[rch]+1 : 0;
fN++;
memmove(&fChamber[Int_t(fIndex[ch])+1], &fChamber[Int_t(fIndex[ch])], (AliTRDgeometry::kNdets-fIndex[ch]-1)*sizeof(void*));
for(Int_t ic = ch+1; ic<AliTRDgeometry::kNdets; ic++) fIndex[ic] += fIndex[ic] >= 0 ? 1 : 0;
AliTRDtrackingChamber *chmb = fChamber[Int_t(fIndex[ch])] = new AliTRDtrackingChamber();
chmb->SetDetector(AliTRDgeometry::GetDetector(layer, stack, fSector));
return chmb;
}
AliTRDtrackingChamber** AliTRDtrackingSector::GetStack(Int_t stack)
{
if(stack<0 || stack>=AliTRDgeometry::kNstack) return NULL;
Int_t ich, n = 0;
for(int il=0; il<AliTRDgeometry::kNlayer; il++){
ich = stack*AliTRDgeometry::kNlayer + il;
if(fIndex[ich] < 0) fStack[il] = NULL;
else{
fStack[il] = fChamber[Int_t(fIndex[ich])];
n++;
}
}
return n ? &fStack[0] : NULL;
}
void AliTRDtrackingSector::Print(Option_t *opt) const
{
printf("\n\tSector[%2d]\n", fSector);
for(int il=0; il<AliTRDgeometry::kNlayer; il++){
for(int is =0; is<AliTRDgeometry::kNstack; is++){
Int_t ch = is*AliTRDgeometry::kNlayer + il;
if(opt) fChamber[Int_t(fIndex[ch])]->Print(opt);
else printf("%2d[%2d] ", fIndex[ch], fIndex[ch]>=0 ? fChamber[Int_t(fIndex[ch])]->GetNClusters() : 0);
}
if(!opt) printf("\n");
}
}
AliTRDtrackingSector.cxx:1 AliTRDtrackingSector.cxx:2 AliTRDtrackingSector.cxx:3 AliTRDtrackingSector.cxx:4 AliTRDtrackingSector.cxx:5 AliTRDtrackingSector.cxx:6 AliTRDtrackingSector.cxx:7 AliTRDtrackingSector.cxx:8 AliTRDtrackingSector.cxx:9 AliTRDtrackingSector.cxx:10 AliTRDtrackingSector.cxx:11 AliTRDtrackingSector.cxx:12 AliTRDtrackingSector.cxx:13 AliTRDtrackingSector.cxx:14 AliTRDtrackingSector.cxx:15 AliTRDtrackingSector.cxx:16 AliTRDtrackingSector.cxx:17 AliTRDtrackingSector.cxx:18 AliTRDtrackingSector.cxx:19 AliTRDtrackingSector.cxx:20 AliTRDtrackingSector.cxx:21 AliTRDtrackingSector.cxx:22 AliTRDtrackingSector.cxx:23 AliTRDtrackingSector.cxx:24 AliTRDtrackingSector.cxx:25 AliTRDtrackingSector.cxx:26 AliTRDtrackingSector.cxx:27 AliTRDtrackingSector.cxx:28 AliTRDtrackingSector.cxx:29 AliTRDtrackingSector.cxx:30 AliTRDtrackingSector.cxx:31 AliTRDtrackingSector.cxx:32 AliTRDtrackingSector.cxx:33 AliTRDtrackingSector.cxx:34 AliTRDtrackingSector.cxx:35 AliTRDtrackingSector.cxx:36 AliTRDtrackingSector.cxx:37 AliTRDtrackingSector.cxx:38 AliTRDtrackingSector.cxx:39 AliTRDtrackingSector.cxx:40 AliTRDtrackingSector.cxx:41 AliTRDtrackingSector.cxx:42 AliTRDtrackingSector.cxx:43 AliTRDtrackingSector.cxx:44 AliTRDtrackingSector.cxx:45 AliTRDtrackingSector.cxx:46 AliTRDtrackingSector.cxx:47 AliTRDtrackingSector.cxx:48 AliTRDtrackingSector.cxx:49 AliTRDtrackingSector.cxx:50 AliTRDtrackingSector.cxx:51 AliTRDtrackingSector.cxx:52 AliTRDtrackingSector.cxx:53 AliTRDtrackingSector.cxx:54 AliTRDtrackingSector.cxx:55 AliTRDtrackingSector.cxx:56 AliTRDtrackingSector.cxx:57 AliTRDtrackingSector.cxx:58 AliTRDtrackingSector.cxx:59 AliTRDtrackingSector.cxx:60 AliTRDtrackingSector.cxx:61 AliTRDtrackingSector.cxx:62 AliTRDtrackingSector.cxx:63 AliTRDtrackingSector.cxx:64 AliTRDtrackingSector.cxx:65 AliTRDtrackingSector.cxx:66 AliTRDtrackingSector.cxx:67 AliTRDtrackingSector.cxx:68 AliTRDtrackingSector.cxx:69 AliTRDtrackingSector.cxx:70 AliTRDtrackingSector.cxx:71 AliTRDtrackingSector.cxx:72 AliTRDtrackingSector.cxx:73 AliTRDtrackingSector.cxx:74 AliTRDtrackingSector.cxx:75 AliTRDtrackingSector.cxx:76 AliTRDtrackingSector.cxx:77 AliTRDtrackingSector.cxx:78 AliTRDtrackingSector.cxx:79 AliTRDtrackingSector.cxx:80 AliTRDtrackingSector.cxx:81 AliTRDtrackingSector.cxx:82 AliTRDtrackingSector.cxx:83 AliTRDtrackingSector.cxx:84 AliTRDtrackingSector.cxx:85 AliTRDtrackingSector.cxx:86 AliTRDtrackingSector.cxx:87 AliTRDtrackingSector.cxx:88 AliTRDtrackingSector.cxx:89 AliTRDtrackingSector.cxx:90 AliTRDtrackingSector.cxx:91 AliTRDtrackingSector.cxx:92 AliTRDtrackingSector.cxx:93 AliTRDtrackingSector.cxx:94 AliTRDtrackingSector.cxx:95 AliTRDtrackingSector.cxx:96 AliTRDtrackingSector.cxx:97 AliTRDtrackingSector.cxx:98 AliTRDtrackingSector.cxx:99 AliTRDtrackingSector.cxx:100 AliTRDtrackingSector.cxx:101 AliTRDtrackingSector.cxx:102 AliTRDtrackingSector.cxx:103 AliTRDtrackingSector.cxx:104 AliTRDtrackingSector.cxx:105 AliTRDtrackingSector.cxx:106 AliTRDtrackingSector.cxx:107 AliTRDtrackingSector.cxx:108 AliTRDtrackingSector.cxx:109 AliTRDtrackingSector.cxx:110 AliTRDtrackingSector.cxx:111 AliTRDtrackingSector.cxx:112 AliTRDtrackingSector.cxx:113 AliTRDtrackingSector.cxx:114 AliTRDtrackingSector.cxx:115 AliTRDtrackingSector.cxx:116 AliTRDtrackingSector.cxx:117 AliTRDtrackingSector.cxx:118 AliTRDtrackingSector.cxx:119 AliTRDtrackingSector.cxx:120 AliTRDtrackingSector.cxx:121 AliTRDtrackingSector.cxx:122 AliTRDtrackingSector.cxx:123 AliTRDtrackingSector.cxx:124 AliTRDtrackingSector.cxx:125 AliTRDtrackingSector.cxx:126 AliTRDtrackingSector.cxx:127 AliTRDtrackingSector.cxx:128 AliTRDtrackingSector.cxx:129 AliTRDtrackingSector.cxx:130 AliTRDtrackingSector.cxx:131 AliTRDtrackingSector.cxx:132 AliTRDtrackingSector.cxx:133 AliTRDtrackingSector.cxx:134 AliTRDtrackingSector.cxx:135 AliTRDtrackingSector.cxx:136 AliTRDtrackingSector.cxx:137 AliTRDtrackingSector.cxx:138 AliTRDtrackingSector.cxx:139 AliTRDtrackingSector.cxx:140 AliTRDtrackingSector.cxx:141 AliTRDtrackingSector.cxx:142 AliTRDtrackingSector.cxx:143 AliTRDtrackingSector.cxx:144 AliTRDtrackingSector.cxx:145 AliTRDtrackingSector.cxx:146 AliTRDtrackingSector.cxx:147 AliTRDtrackingSector.cxx:148 AliTRDtrackingSector.cxx:149 AliTRDtrackingSector.cxx:150 AliTRDtrackingSector.cxx:151 AliTRDtrackingSector.cxx:152 AliTRDtrackingSector.cxx:153 AliTRDtrackingSector.cxx:154 AliTRDtrackingSector.cxx:155 AliTRDtrackingSector.cxx:156 AliTRDtrackingSector.cxx:157 AliTRDtrackingSector.cxx:158 AliTRDtrackingSector.cxx:159 AliTRDtrackingSector.cxx:160 AliTRDtrackingSector.cxx:161 AliTRDtrackingSector.cxx:162 AliTRDtrackingSector.cxx:163 AliTRDtrackingSector.cxx:164 AliTRDtrackingSector.cxx:165 AliTRDtrackingSector.cxx:166 AliTRDtrackingSector.cxx:167 AliTRDtrackingSector.cxx:168 AliTRDtrackingSector.cxx:169 AliTRDtrackingSector.cxx:170 AliTRDtrackingSector.cxx:171 AliTRDtrackingSector.cxx:172 AliTRDtrackingSector.cxx:173 AliTRDtrackingSector.cxx:174 AliTRDtrackingSector.cxx:175 AliTRDtrackingSector.cxx:176