/*
$Log$
+Revision 1.20 2001/07/20 10:03:14 morsch
+Changes needed to work with Root 3.01 (substitute lhs [] operator). (Jiri Chudoba)
+
+Revision 1.19 2001/05/16 14:57:17 alibrary
+New files for folders and Stack
+
+Revision 1.18 2001/04/11 12:33:56 morsch
+Bug in GetPadC in case of staggered planes corrected. (Thanks to J.P. Cussonneau)
+
+Revision 1.17 2001/01/30 12:17:04 morsch
+Remove obolete print-statement.
+
+Revision 1.16 2001/01/30 09:23:14 hristov
+Streamers removed (R.Brun)
+
+Revision 1.15 2001/01/26 21:25:48 morsch
+Empty default constructors and.
+
+Revision 1.14 2000/12/21 22:12:41 morsch
+Clean-up of coding rule violations,
+
+Revision 1.13 2000/12/07 10:41:51 hristov
+fCorr replaced by fCorrA
+
+Revision 1.12 2000/12/06 11:55:41 morsch
+Introduce SetOffsetY(Float_t off) method as simplified simulation of pad staggering.
+fOffset is the staggering offset in y.
+
Revision 1.11 2000/11/06 09:20:43 morsch
AliMUON delegates part of BuildGeometry() to AliMUONSegmentation using the
Draw() method. This avoids code and parameter replication.
{
// Dummy copy constructor
}
+
AliMUONSegmentationV01::AliMUONSegmentationV01()
{
// Default constructor
- fNsec=4;
+ fRSec = 0;
+ fNDiv = 0;
+ fDpxD = 0;
+ fCorrA = 0;
+}
+
+AliMUONSegmentationV01::AliMUONSegmentationV01(Int_t nsec)
+{
+// Non default constructor
+
+ fNsec = nsec;
fRSec = new TArrayF(fNsec);
fNDiv = new TArrayI(fNsec);
fDpxD = new TArrayF(fNsec);
+
+
(*fRSec)[0]=(*fRSec)[1]=(*fRSec)[2]=(*fRSec)[3]=0;
(*fNDiv)[0]=(*fNDiv)[1]=(*fNDiv)[2]=(*fNDiv)[3]=0;
(*fDpxD)[0]=(*fDpxD)[1]=(*fDpxD)[2]=(*fDpxD)[3]=0;
- fCorr = new TObjArray(3);
- (*fCorr)[0]=0;
- (*fCorr)[1]=0;
- (*fCorr)[2]=0;
+ fCorrA = new TObjArray(3);
+ fCorrA->AddAt(0,0);
+ fCorrA->AddAt(0,1);
+ fCorrA->AddAt(0,2);
fOffsetY=0;
}
+AliMUONSegmentationV01::~AliMUONSegmentationV01()
+{
+// Destructor
+ if (fRSec) delete fRSec;
+ if (fNDiv) delete fNDiv;
+ if (fDpxD) delete fDpxD;
+ if (fCorrA) {
+ fCorrA->Delete();
+ delete fCorrA;
+ }
+}
+
+
Float_t AliMUONSegmentationV01::Dpx(Int_t isec) const
{
//
// This version approximates concentric segmentation zones
//
Int_t isec;
- printf("\n Initialise Segmentation V01\n");
+ //printf("\n Initialise Segmentation V01\n");
+
+
fNpy=Int_t((*fRSec)[fNsec-1]/fDpy)+1;
(*fDpxD)[fNsec-1]=fDpx;
{
// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
//
- y = (iy>0) ?
- Float_t(iy*fDpy)-fDpy/2.+fOffsetY
- :
- Float_t(iy*fDpy)+fDpy/2.-fOffsetY;
+ y = (iy>0) ?
+ Float_t(iy*fDpy)-fDpy/2.+fOffsetY
+ :
+ Float_t(iy*fDpy)+fDpy/2.+fOffsetY;
+
//
// Find sector isec
Int_t isec=AliMUONSegmentationV01::Sector(ix,iy);
}
Int_t AliMUONSegmentationV01::MorePads()
+
+{
// Stopping condition for the iterator over pads
//
// Are there more pads in the integration region
-{
return (fIx != -1 || fIy != -1);
/*
if ((fX >= fXmax && fIy >= fIymax) || fY==0) {
}
void AliMUONSegmentationV01::SetCorrFunc(Int_t isec, TF1* func)
{
- (*fCorr)[isec]=func;
+// Set the correction function
+ fCorrA->AddAt(func,isec);
}
TF1* AliMUONSegmentationV01::CorrFunc(Int_t isec) const
{
- return (TF1*) (*fCorr)[isec];
+// Get correction function
+ //PH return (TF1*) (*fCorrA)[isec];
+ return (TF1*) fCorrA->At(isec);
}
AliMUONSegmentationV01& AliMUONSegmentationV01::operator
// Dummy assignment operator
return *this;
}
+