public:
AliTPCParam();
virtual ~AliTPCParam();
-
+ TGeoHMatrix * Tracking2LocalMatrix(const TGeoHMatrix * geoMatrix, Int_t sector) const;
virtual Bool_t Transform(Float_t *xyz, Int_t *index, Int_t* oindex);
//transformation from input coodination system to output coordination system
Int_t Transform0to1(Float_t *xyz, Int_t *index) const;
Int_t GetNInnerSector() const {return fNInnerSector;}
Int_t GetNOuterSector() const {return fNOuterSector;}
Int_t GetNSector() const {return fNSector;}
- Float_t GetZLength(Int_t sector=0) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;}
+ Float_t GetZLength(Int_t sector=0) const;
Int_t GetGeometryType() const {return fGeometryType;}
//
private:
AliTPCParam(const AliTPCParam &);
AliTPCParam & operator=(const AliTPCParam &);
+
+ void CleanGeoMatrices();
+
ClassDef(AliTPCParam,4) //parameter object for set:TPC
};
//we must have information about sector!
//rotate to given sector
Double_t xyzmaster[3] = {xyz[0],xyz[1],xyz[2]};
- Double_t xyzlocal[3];
- fGlobalMatrix[index[1]]->MasterToLocal(xyzmaster,xyzlocal);
+ Double_t xyzlocal[3]={0,0,0};
+ if (index[1]>=0 && index[1]<fNSector)
+ fGlobalMatrix[index[1]]->MasterToLocal(xyzmaster,xyzlocal);
xyz[0] = xyzlocal[0];
xyz[1] = xyzlocal[1];
xyz[2] = xyzlocal[2];
xyz[1]=y1;
xyz[2]=fZLength-xyz[2];
if (index[1]<fNInnerSector)
- if ( index[1]>=(fNInnerSector>>1)) xyz[2]*=-1.;
+ {if ( index[1]>=(fNInnerSector>>1)) xyz[2]*=-1.;}
else
- if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[2]*=-1;
+ {if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[2]*=-1;}
index[0]=1;
}
//transform xyz coordinates to 'digit' coordinates
//
+ if (index[1]<fNInnerSector) {
+ if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
+ }
+ else {
+ if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
+ }
+
xyz[2]/=fZWidth;
if (index[1]<fNInnerSector) {
xyz[0]/=fInnerPadPitchLength;
//
//transforms 'digit' coordinates to xyz coordinates
//
+ if (index[1]<fNInnerSector) {
+ if ( index[1]>=(fNInnerSector>>1)) xyz[1]*=-1.;
+ }
+ else {
+ if ( (index[1]-fNInnerSector) >= (fNOuterSector>>1) ) xyz[1]*=-1;
+ }
+
xyz[2]*=fZWidth;
if (index[1]<fNInnerSector) {
xyz[0]*=fInnerPadPitchLength;
}
index[0]=6;
}
-
+inline Float_t AliTPCParam::GetZLength(Int_t sector) const
+{ if(sector <18 || (sector>35&§or<54)) return fZLength-0.275;
+ else return fZLength-0.302;
+}
#endif