/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ /* $Id: AliTRDtrackingSector.cxx 23810 2008-02-08 09:00:27Z hristov $ */ /////////////////////////////////////////////////////////////////////////////// // // // Tracking data container for one sector // // // // Authors: // // Alex Bercuci // // Markus Fasel // // // /////////////////////////////////////////////////////////////////////////////// #include "AliTRDtrackingSector.h" #include "AliTRDcalibDB.h" #include "AliTRDCommonParam.h" #include "AliTRDgeometry.h" #include "AliTRDpadPlane.h" #include "AliTRDtrackingChamber.h" ClassImp(AliTRDtrackingSector) //_____________________________________________________________________________ AliTRDtrackingSector::AliTRDtrackingSector() :fSector(-1) ,fN(0) ,fGeom(0x0) { // Default constructor for(int ic=0; icBuild(fGeom); Int_t nl; for(int il=0; ilGetX(); nl++; } if(!nl){ //printf("Could not estimate radial position of plane %d in sector %d.\n", ip, fSector); continue; } fX0[il] /= Float_t(nl); } } //_____________________________________________________________________________ void AliTRDtrackingSector::Clear(const Option_t *opt) { // Reset counters and steer chamber clear for(Int_t ich=0; ichClear(opt); delete fChamber[ich]; fChamber[ich] = 0x0; // I would avoid } for(Int_t ich=0; ich= 0) return fChamber[Int_t(fIndex[ch])]; else if(!build) return 0x0; // CHAMBER HAS TO BE BUILD 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])], (kNChambersSector-fIndex[ch]-1)*sizeof(void*)); for(Int_t ic = ch+1; ic= 0 ? 1 : 0; return fChamber[Int_t(fIndex[ch])] = new AliTRDtrackingChamber(AliTRDgeometry::GetDetector(layer, stack, fSector)); } //_____________________________________________________________________________ AliTRDtrackingChamber** AliTRDtrackingSector::GetStack(Int_t stack) { // Return chamber at position (stack, plane) in current // sector or build a new one if it is not already created if(stack<0 || stack>=AliTRDgeometry::kNstack) return 0x0; Int_t ich, n = 0; for(int il=0; il=0 ? fChamber[Int_t(fIndex[ch])]->GetNClusters() : 0); } printf("\n"); } }