]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrackingSector.cxx
Introduce setter for fgkTracklet
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackingSector.cxx
index 2e1b5d95248faa9e1ac7f112ef2fd75976c1effb..f63de7cc2820ba795f88f28e0b300412d06d7843 100644 (file)
 //                                                                           //\r
 ///////////////////////////////////////////////////////////////////////////////\r
 \r
-#include "AliTRDtrackingSector.h"\r
 #include "AliTRDcalibDB.h"\r
 #include "AliTRDCommonParam.h"\r
-#include "AliTRDgeometry.h"\r
+#include "AliTRDReconstructor.h"\r
 #include "AliTRDpadPlane.h"\r
+#include "AliTRDtrackingSector.h"\r
 #include "AliTRDtrackingChamber.h"\r
 \r
+\r
 ClassImp(AliTRDtrackingSector)\r
 \r
 //_____________________________________________________________________________\r
@@ -42,11 +43,9 @@ AliTRDtrackingSector::AliTRDtrackingSector()
 {\r
   // Default constructor\r
   \r
-  for(int ic=0; ic<kNChambersSector; ic++){\r
-    fChamber[ic] = 0x0;\r
-    fIndex[ic]   = -1;\r
-  }\r
-  for(int il=0; il<AliTRDgeometry::kNlayer; il++) fX0[il] = 0.;\r
+  memset(fChamber, 0, AliTRDgeometry::kNdets*sizeof(AliTRDtrackingChamber*));\r
+  memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));\r
+  memset(fX0, 0, AliTRDgeometry::kNlayer*sizeof(Float_t));\r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -59,49 +58,27 @@ AliTRDtrackingSector::AliTRDtrackingSector(AliTRDgeometry *geo, Int_t gs)
   // AliTRDtrackingSector Constructor\r
   //\r
 \r
-  for(int ic=0; ic<kNChambersSector; ic++){\r
-    fChamber[ic] = 0x0;\r
-    fIndex[ic]   = -1;\r
-  }\r
-  for(int il=0; il<AliTRDgeometry::kNlayer; il++) fX0[il] = 0.;\r
-}\r
-\r
-//_____________________________________________________________________________\r
-AliTRDtrackingSector::AliTRDtrackingSector(const AliTRDtrackingSector &/*t*/)\r
-  :fSector(-1)\r
-  ,fN(0)\r
-  ,fGeom(0x0)\r
-{\r
-  //\r
-  // Copy constructor\r
-  //\r
-\r
+  memset(fChamber, 0, AliTRDgeometry::kNdets*sizeof(AliTRDtrackingChamber*));\r
+  memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));\r
+  memset(fX0, 0, AliTRDgeometry::kNlayer*sizeof(Float_t));\r
 }\r
 \r
-//_____________________________________________________________________________\r
-AliTRDtrackingSector::~AliTRDtrackingSector()\r
-{\r
-  //\r
-  // Destructor\r
-  //\r
-\r
-}\r
     \r
 //_____________________________________________________________________________\r
-void AliTRDtrackingSector::Init(const AliTRDReconstructor *rec)\r
+void AliTRDtrackingSector::Init(const AliTRDReconstructor *rec, const AliTRDCalDet *cal)\r
 {              \r
 //     Steer building of tracking chambers and build tracking sector.\r
 //     Propagate radial position information (calibration/alignment aware) from chambers to sector level\r
 //\r
   \r
   AliTRDchamberTimeBin *tb = 0x0;\r
-  AliTRDtrackingChamber *tc = 0x0; int ic = 0; \r
-  while((ic<kNChambersSector) && (tc = fChamber[ic++])){\r
-    for(Int_t itb=0; itb<AliTRDtrackingChamber::kNTimeBins; itb++){\r
-      if(!(tb = tc->GetTB(itb))) continue;\r
+  AliTRDtrackingChamber **tc = &fChamber[0];\r
+  for(Int_t ic = 0; (ic<AliTRDgeometry::kNdets) && (*tc); ic++, tc++){\r
+    for(Int_t itb=0; itb<AliTRDseedV1::kNtb; itb++){\r
+      if(!(tb = (*tc)->GetTB(itb))) continue;\r
       tb->SetReconstructor(rec);\r
     }\r
-    tc->Build(fGeom);\r
+    (*tc)->Build(fGeom, cal, rec->IsHLT());\r
   }\r
     \r
   Int_t nl;\r
@@ -110,8 +87,8 @@ void AliTRDtrackingSector::Init(const AliTRDReconstructor *rec)
     for(int is=0; is<AliTRDgeometry::kNstack; is++){\r
       Int_t idx = is*AliTRDgeometry::kNlayer + il;\r
       if(fIndex[idx]<0) continue;\r
-      tc = GetChamber(fIndex[idx]);\r
-      fX0[il] += tc->GetX(); nl++; \r
+      fX0[il] += GetChamber(fIndex[idx])->GetX(); \r
+      nl++; \r
     }\r
     if(!nl){\r
       //printf("Could not estimate radial position  of plane %d in sector %d.\n", ip, fSector);\r
@@ -128,11 +105,12 @@ void AliTRDtrackingSector::Clear(const Option_t *opt)
 {\r
 // Reset counters and steer chamber clear\r
 \r
-  for(Int_t ich=0; ich<fN; ich++){ \r
-    fChamber[ich]->Clear(opt);\r
-    delete fChamber[ich]; fChamber[ich] = 0x0;   // I would avoid\r
+  AliTRDtrackingChamber **tc = &fChamber[0];\r
+  for(Int_t ich=0; ich<fN; ich++, tc++){ \r
+    (*tc)->Clear(opt);\r
+    delete (*tc); (*tc) = 0x0;   // I would avoid\r
   }    \r
-  for(Int_t ich=0; ich<kNChambersSector; ich++) fIndex[ich] = -1;\r
+  memset(fIndex, -1, AliTRDgeometry::kNdets*sizeof(Char_t));\r
   fN = 0;\r
 }\r
 \r
@@ -151,10 +129,12 @@ AliTRDtrackingChamber* AliTRDtrackingSector::GetChamber(Int_t stack, Int_t layer
   fIndex[ch] = rch >=0 ? fIndex[rch]+1 : 0; \r
   fN++;\r
   \r
-  memmove(&fChamber[Int_t(fIndex[ch])+1], &fChamber[Int_t(fIndex[ch])], (kNChambersSector-fIndex[ch]-1)*sizeof(void*));\r
-  for(Int_t ic = ch+1; ic<kNChambersSector; ic++) fIndex[ic] += fIndex[ic] >= 0 ? 1 : 0;\r
+  memmove(&fChamber[Int_t(fIndex[ch])+1], &fChamber[Int_t(fIndex[ch])], (AliTRDgeometry::kNdets-fIndex[ch]-1)*sizeof(void*));\r
+  for(Int_t ic = ch+1; ic<AliTRDgeometry::kNdets; ic++) fIndex[ic] += fIndex[ic] >= 0 ? 1 : 0;\r
   \r
-  return fChamber[Int_t(fIndex[ch])] = new AliTRDtrackingChamber(AliTRDgeometry::GetDetector(layer, stack, fSector));\r
+  AliTRDtrackingChamber *chmb = fChamber[Int_t(fIndex[ch])] = new AliTRDtrackingChamber();\r
+  chmb->SetDetector(AliTRDgeometry::GetDetector(layer, stack, fSector));\r
+  return chmb;\r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -179,18 +159,19 @@ AliTRDtrackingChamber** AliTRDtrackingSector::GetStack(Int_t stack)
 }\r
 \r
 //_____________________________________________________________________________\r
-void AliTRDtrackingSector::Print(Option_t *)\r
+void AliTRDtrackingSector::Print(Option_t *opt) const\r
 {\r
 // Dump info about this tracking sector and the tracking chamber within\r
 // \r
 \r
-  printf("\tSector %2d\n", fSector);\r
-  for(int il=0; il<6; il++){\r
-    for(int is =0; is<5; is++){\r
+  printf("\n\tSector[%2d]\n", fSector);\r
+  for(int il=0; il<AliTRDgeometry::kNlayer; il++){\r
+    for(int is =0; is<AliTRDgeometry::kNstack; is++){\r
       Int_t ch = is*AliTRDgeometry::kNlayer + il;\r
-      printf("%2d[%2d] ", fIndex[ch], fIndex[ch]>=0 ? fChamber[Int_t(fIndex[ch])]->GetNClusters() : 0);\r
+      if(opt) fChamber[Int_t(fIndex[ch])]->Print(opt);\r
+      else printf("%2d[%2d] ", fIndex[ch], fIndex[ch]>=0 ? fChamber[Int_t(fIndex[ch])]->GetNClusters() : 0);\r
     }\r
-    printf("\n");\r
+    if(!opt) printf("\n");\r
   }\r
 \r
 }\r