/*
$Log$
+Revision 1.5 2006/04/20 22:30:50 hristov
+Coding conventions (Annalisa)
+
+Revision 1.4 2006/04/16 22:29:05 hristov
+Coding conventions (Annalisa)
+
+Revision 1.3 2006/03/12 14:38:13 arcelli
+ Changes for TOF Reconstruction using TGeo
+
Revision 1.2 2006/02/28 10:38:00 decaro
AliTOFGeometry::fAngles, AliTOFGeometry::fHeights, AliTOFGeometry::fDistances arrays: dimension definition in the right location
according to the PPR TOF geometry
*/
-#include <stdlib.h>
-#include <Riostream.h>
///////////////////////////////////////////////////////////////////////////////
// //
// TOF Geometry class (PPR version) //
// //
///////////////////////////////////////////////////////////////////////////////
-#include "AliLog.h"
+#include "TGeoManager.h"
+
#include "AliConst.h"
+#include "AliLog.h"
-#include "AliTOFGeometry.h"
#include "AliTOFGeometryV4.h"
+extern TGeoManager *gGeoManager;
+
ClassImp(AliTOFGeometryV4)
-const Int_t AliTOFGeometryV4::kNStripC = 20; // number of strips in C type module
const Float_t AliTOFGeometryV4::fgkZlenA = 106.0; // length (cm) of the A module
const Float_t AliTOFGeometryV4::fgkZlenB = 141.0; // length (cm) of the B module
// AliTOFGeometryV4 default constructor
//
- AliTOFGeometry::kNStripC = kNStripC; // number of strips in C type module
+ AliTOFGeometry::fNStripC = kNStripC; // number of strips in C type module
- AliTOFGeometry::kZlenA = fgkZlenA; // length (cm) of the A module
- AliTOFGeometry::kZlenB = fgkZlenB; // length (cm) of the B module
- AliTOFGeometry::kZlenC = fgkZlenC; // length (cm) of the C module
- AliTOFGeometry::kMaxhZtof = fgkMaxhZtof; // Max half z-size of TOF (cm)
+ AliTOFGeometry::fZlenA = fgkZlenA; // length (cm) of the A module
+ AliTOFGeometry::fZlenB = fgkZlenB; // length (cm) of the B module
+ AliTOFGeometry::fZlenC = fgkZlenC; // length (cm) of the C module
+ AliTOFGeometry::fMaxhZtof = fgkMaxhZtof; // Max half z-size of TOF (cm)
- AliTOFGeometry::fgkxTOF = fgkxTOF; // Inner radius of the TOF for Reconstruction (cm)
- AliTOFGeometry::fgkRmin = fgkRmin; // Inner radius of the TOF (cm)
- AliTOFGeometry::fgkRmax = fgkRmax; // Outer radius of the TOF (cm)
+ AliTOFGeometry::fxTOF = fgkxTOF; // Inner radius of the TOF for Reconstruction (cm)
+ AliTOFGeometry::fRmin = fgkRmin; // Inner radius of the TOF (cm)
+ AliTOFGeometry::fRmax = fgkRmax; // Outer radius of the TOF (cm)
Init();
//
// Strips Tilt Angles
+ fPhiSec = 360./kNSectors;
+
Float_t const kangles[kNPlates][kMaxNstrip] ={
{44.494, 43.725, 42.946, 42.156, 41.357, 40.548, 39.729, 38.899,
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d)
+Float_t AliTOFGeometryV4::DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d) const
{
//
// Returns distance of space point with coor pos (x,y,z) (cm) wrt
}
//_____________________________________________________________________________
-Bool_t AliTOFGeometryV4::IsInsideThePadPar(Int_t *det, Float_t *pos)
+Bool_t AliTOFGeometryV4::IsInsideThePadPar(Int_t *det, Float_t *pos) const
{
//
// Returns true if space point with coor pos (x,y,z) (cm) falls
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::DistanceToPad(Int_t *det, TGeoHMatrix mat, Float_t *pos, Float_t *dist3d)
+Float_t AliTOFGeometryV4::DistanceToPad(Int_t *det, TGeoHMatrix mat, Float_t *pos, Float_t *dist3d) const
{
//
// Returns distance of space point with coor pos (x,y,z) (cm) wrt
//_____________________________________________________________________________
-Bool_t AliTOFGeometryV4::IsInsideThePad( Int_t *det, TGeoHMatrix mat, Float_t *pos)
+Bool_t AliTOFGeometryV4::IsInsideThePad( Int_t *det, TGeoHMatrix mat, Float_t *pos) const
{
//
// Returns true if space point with coor pos (x,y,z) (cm) falls
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetX(Int_t *det)
+Float_t AliTOFGeometryV4::GetX(Int_t *det) const
{
//
// Returns X coordinate (cm)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetY(Int_t *det)
+Float_t AliTOFGeometryV4::GetY(Int_t *det) const
{
//
// Returns Y coordinate (cm)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetZ(Int_t *det)
+Float_t AliTOFGeometryV4::GetZ(Int_t *det) const
{
//
// Returns Z coordinate (cm)
}
//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetSector(Float_t *pos)
+Int_t AliTOFGeometryV4::GetSector(Float_t *pos) const
{
//
// Returns the Sector index
}
//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPadX(Float_t *pos)
+Int_t AliTOFGeometryV4::GetPadX(Float_t *pos) const
{
//
// Returns the Pad index along X
}
//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPlate(Float_t *pos)
+Int_t AliTOFGeometryV4::GetPlate(Float_t *pos) const
{
//
// Returns the Plate index
}
//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetStrip(Float_t *pos)
+Int_t AliTOFGeometryV4::GetStrip(Float_t *pos) const
{
//
// Returns the Strip index
}
//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPadZ(Float_t *pos)
+Int_t AliTOFGeometryV4::GetPadZ(Float_t *pos) const
{
//
// Returns the Pad index along Z
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMinPlateTheta(Int_t iPlate)
+Float_t AliTOFGeometryV4::GetMinPlateTheta(Int_t iPlate) const
{
//
// Returns the minimum theta angle of a given plate iPlate (rad)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMaxPlateTheta(Int_t iPlate)
+Float_t AliTOFGeometryV4::GetMaxPlateTheta(Int_t iPlate) const
{
//
// Returns the maximum theta angle of a given plate iPlate (rad)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMaxStripTheta(Int_t iPlate, Int_t iStrip)
+Float_t AliTOFGeometryV4::GetMaxStripTheta(Int_t iPlate, Int_t iStrip) const
{
//
// Returns the maximum theta angle of a given strip iStrip (rad)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMinStripTheta(Int_t iPlate, Int_t iStrip)
+Float_t AliTOFGeometryV4::GetMinStripTheta(Int_t iPlate, Int_t iStrip) const
{
//
// Returns the minimum theta angle of a given Strip iStrip (rad)
}
//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetStripTheta(Int_t iPlate, Int_t iStrip)
+Float_t AliTOFGeometryV4::GetStripTheta(Int_t iPlate, Int_t iStrip) const
{
//
// returns the median theta angle of a given strip iStrip (rad)
}
+//_____________________________________________________________________________
+void AliTOFGeometryV4::GetVolumePath(Int_t sector, Char_t *path ) {
+ //--------------------------------------------------------------------
+ // This function returns the colume path of a given sector
+ //--------------------------------------------------------------------
+ Char_t string[100];
+
+ Int_t icopy=-1;
+
+ if(sector<3){
+ icopy=sector+1;
+ sprintf(string,"/ALIC_1/B077_1/B075_%i/BTO3_1",icopy);
+ }
+ else if(sector<11){
+ // icopy=sector-2;
+ icopy=sector+3;
+ sprintf(string,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
+ }
+ else if(sector==11 || sector==12){
+ icopy=sector-10;
+ sprintf(string,"/ALIC_1/B077_1/B074_%i/BTO2_1",icopy);
+ }
+ else {
+ // icopy=sector-4;
+ icopy=sector-12;
+ sprintf(string,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
+ }
+
+ sprintf(path,"%s",string);
+
+}
+//_____________________________________________________________________________
+void AliTOFGeometryV4::GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path ) {
+ //--------------------------------------------------------------------
+ // This function returns the colume path of a given strip
+ //--------------------------------------------------------------------
+ Char_t string1[100];
+ Char_t string2[100];
+ Char_t string3[100];
+ Int_t nstrB = NStripB();
+ Int_t nstrC = NStripC();
+
+ Int_t icopy=-1;
+
+ if(sector<3){
+ icopy=sector+1;
+ sprintf(string1,"/ALIC_1/B077_1/B075_%i/BTO3_1",icopy);
+ }
+ else if(sector<11){
+ // icopy=sector-2;
+ icopy=sector+3;
+ sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
+ }
+ else if(sector==11 || sector==12){
+ icopy=sector-10;
+ sprintf(string1,"/ALIC_1/B077_1/B074_%i/BTO2_1",icopy);
+ }
+ else {
+ // icopy=sector-4;
+ icopy=sector-12;
+ sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
+ }
+
+ if( plate ==0){
+ sprintf(string2,"FTOC_1/FLTC_0");
+ icopy = nstrC - strip;
+ sprintf(string3,"FSTR_%i",icopy);
+ }
+ else if( plate ==1){
+ sprintf(string2,"FTOB_1/FLTB_0");
+ icopy = nstrB - strip;
+ sprintf(string3,"FSTR_%i",icopy);
+ }
+ else if( plate ==2){
+ sprintf(string2,"FTOA_0/FLTA_0");
+ icopy = strip+1;
+ sprintf(string3,"FSTR_%i",icopy);
+ }
+ else if( plate ==3){
+ sprintf(string2,"FTOB_2/FLTB_0");
+ icopy = strip+1;
+ sprintf(string3,"FSTR_%i",icopy);
+ }
+ else if( plate ==4){
+ sprintf(string2,"FTOC_2/FLTC_0");
+ icopy = strip+1;
+ sprintf(string3,"FSTR_%i",icopy);
+ }
+
+ sprintf(path,"%s/%s/%s/FSEN_0",string1,string2,string3);
+
+}
+
//_____________________________________________________________________________
void AliTOFGeometryV4::GetPos(Int_t *det, Float_t *pos)
{