#include <TClonesArray.h>
#include "AliITSURecoLayer.h"
-#include "AliITSUGeomTGeo.h"
#include "AliITSsegmentation.h"
#include "AliITSUAux.h"
#include "AliITSUClusterPix.h"
+#include "AliITSUGeomTGeo.h"
+#include "AliLog.h"
using namespace AliITSUAux;
using namespace TMath;
delete[] fSensors;
delete[] fPhiLadMax;
delete[] fPhiLadMin;
+ if (GetOwnsClusterArray()) delete fClusters;
}
//______________________________________________________
void AliITSURecoLayer::Build()
{
// build internal structures
+ const double kSafeR = 0.05; // safety margin for Rmin,Rmax of the layer
if (fActiveID<0) return;
fNLadders = fITSGeom->GetNLadders(fActiveID);
fNSensInLadder = fITSGeom->GetNDetectors(fActiveID);
fSensors[ild*fNSensInLadder+idt] = sens;
//
double phiMin=1e9,phiMax=-1e9,zMin=1e9,zMax=-1e9;
- mmod = *fITSGeom->GetMatrix(fActiveID,ild,idt);
+ mmod = *fITSGeom->GetMatrixSens(fActiveID,ild,idt);
for (int ix=0;ix<2;ix++) {
loc[0] = (ix-0.5)*kSegm->Dx(); // +-DX/2
for (int iy=0;iy<2;iy++) {
fRMin = Sqrt(fRMin);
fRMax = Sqrt(fRMax);
fR = 0.5*(fRMin+fRMax);
+ fRMin -= kSafeR;
+ fRMax += kSafeR;
double dz = fNSensInLadder>0 ? fSensDZInv/(fNSensInLadder-1)/fNLadders : fZMax-fZMin;
fSensDZInv = 1./dz;
Bool_t AliITSURecoLayer::IsEqual(const TObject* obj) const
{
// check if layers are equal in R
- const AliITSURecoLayer* lr = dynamic_cast<const AliITSURecoLayer*>(obj);
+ const AliITSURecoLayer* lr = (const AliITSURecoLayer*)obj;
return Abs(lr->GetR()-GetR())<1e-6 ? kTRUE : kFALSE;
}
Int_t AliITSURecoLayer::Compare(const TObject* obj) const
{
// compare two layers
- const AliITSURecoLayer* lr = dynamic_cast<const AliITSURecoLayer*>(obj);
+ const AliITSURecoLayer* lr = (const AliITSURecoLayer*)obj;
double dr = GetR() - lr->GetR();
if (Abs(dr)<1e-6) return 0;
return dr>0 ? 1:-1;
//
}
+
+//_________________________________________________________________
+AliITSURecoSens* AliITSURecoLayer::GetSensorFromID(Int_t i) const
+{
+ // get sensor from its global id
+ i -= fITSGeom->GetFirstModIndex(fActiveID);
+ if (i<0||i>=fNSensors) AliFatal(Form("Sensor with id=%d is not in layer %d",i+fITSGeom->GetFirstModIndex(fActiveID),fActiveID));
+ return (AliITSURecoSens*)fSensors[i];
+}