// //\r
///////////////////////////////////////////////////////////////////////////////\r
\r
-#include "AliTRDtrackingSector.h"\r
#include "AliTRDcalibDB.h"\r
#include "AliTRDCommonParam.h"\r
-#include "AliTRDgeometry.h"\r
#include "AliTRDpadPlane.h"\r
+#include "AliTRDtrackingSector.h"\r
#include "AliTRDtrackingChamber.h"\r
\r
+\r
ClassImp(AliTRDtrackingSector)\r
\r
//_____________________________________________________________________________\r
{\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
// 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, const AliTRDCalDet *cal)\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<AliTRDseed::knTimebins; itb++){\r
+ if(!(tb = (*tc)->GetTB(itb))) continue;\r
tb->SetReconstructor(rec);\r
}\r
- tc->Build(fGeom, cal, rec->IsHLT());\r
+ (*tc)->Build(fGeom, cal, rec->IsHLT());\r
}\r
\r
Int_t nl;\r
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
{\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
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
// \r
\r
printf("\tSector %2d\n", fSector);\r
- for(int il=0; il<6; il++){\r
- for(int is =0; is<5; is++){\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
}\r
#define ALITRDTRACKINGSECTOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
+* See cxx source for full Copyright notice */
/* $Id: AliTRDtrackingSector.h 22646 2007-11-29 18:13:40Z cblume $ */
// //
////////////////////////////////////////////////////////////////////////////
-#ifndef ROOT_Rtypes
-#include "Rtypes.h"
+#ifndef ALITRDGEOMETRY_H
+#include "AliTRDgeometry.h"
#endif
class AliTRDCalDet;
-class AliTRDgeometry;
class AliTRDReconstructor;
class AliTRDtrackingChamber;
class AliTRDtrackingSector
{
public:
- enum{
- kNChambersSector = 30
- , kNplane = 6
- , kTrackingSectors = 18
- };
-
- AliTRDtrackingSector();
- AliTRDtrackingSector(AliTRDgeometry* geo, Int_t gs);
- AliTRDtrackingSector(const AliTRDtrackingSector &/*t*/);
- virtual ~AliTRDtrackingSector();
-
- AliTRDtrackingSector &operator=(const AliTRDtrackingSector &/*t*/) { return *this; }
-
+ AliTRDtrackingSector();
+ AliTRDtrackingSector(AliTRDgeometry* geo, Int_t gs);
+ virtual ~AliTRDtrackingSector(){;}
+
void Clear(const Option_t *opt = 0x0);
- Int_t GetNChambers() const { return fN; }
- Double_t GetX(Int_t pl) const { return pl >=0 && pl < kNplane ? fX0[pl] : 0.; }
- AliTRDtrackingChamber* GetChamber(Int_t i) const { return i>=0 && i < fN ? fChamber[i] : 0x0; }
- AliTRDtrackingChamber* GetChamber(Int_t stack, Int_t plane, Bool_t build = kFALSE);
- AliTRDtrackingChamber** GetStack(Int_t stack);
- Int_t GetSector() const {return fSector;}
+ Int_t GetNChambers() const { return fN; }
+ Double_t GetX(Int_t pl) const { return pl >=0 && pl < AliTRDgeometry::kNlayer ? fX0[pl] : 0.; }
+ AliTRDtrackingChamber* GetChamber(Int_t i) const { return i>=0 && i < fN ? fChamber[i] : 0x0; }
+ AliTRDtrackingChamber* GetChamber(Int_t stack, Int_t plane, Bool_t build = kFALSE);
+ AliTRDtrackingChamber** GetStack(Int_t stack);
+ Int_t GetSector() const {return fSector;}
- void Init(const AliTRDReconstructor *rec, const AliTRDCalDet *cal);
- void Print(Option_t *opt = 0x0);
-
- void SetGeometry(AliTRDgeometry *geo) {fGeom = geo;}
-
+ void Init(const AliTRDReconstructor *rec, const AliTRDCalDet *cal);
+ void Print(Option_t *opt = 0x0);
+
+ void SetGeometry(AliTRDgeometry *geo) {fGeom = geo;}
+
private:
- Char_t fSector; // Sector# in AliTRDgeometry
- UChar_t fN; // Total number of chambers allocated
- Char_t fIndex[kNChambersSector]; // indexes of allocated chambers
- Float_t fX0[kNplane]; // average position of pad plane for each plane
- AliTRDgeometry *fGeom; // Geometry
- AliTRDtrackingChamber *fChamber[kNChambersSector];// chambers
- AliTRDtrackingChamber *fStack[kNplane]; //! temporary holding one stack
+ AliTRDtrackingSector(const AliTRDtrackingSector &/*t*/);
+ AliTRDtrackingSector &operator=(const AliTRDtrackingSector &/*t*/);
- ClassDef(AliTRDtrackingSector, 1) // TRD tracker container for one sector
+
+private:
+ Char_t fSector; // Sector# in AliTRDgeometry
+ UChar_t fN; // Total number of chambers allocated
+ Char_t fIndex[AliTRDgeometry::kNdets]; // indexes of allocated chambers
+ Float_t fX0[AliTRDgeometry::kNlayer]; // average position of pad plane for each plane
+ AliTRDgeometry *fGeom; // Geometry
+ AliTRDtrackingChamber *fChamber[AliTRDgeometry::kNdets];// chambers
+ AliTRDtrackingChamber *fStack[AliTRDgeometry::kNlayer]; //! temporary holding one stack
+
+ ClassDef(AliTRDtrackingSector, 1) // TRD tracker container for one sector
};