+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONSLAT_H
-#define ALIMUONSEGMENTATIONSLAT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation classes for slat modules //
-// to be used with AluMUONSegmentationSlat //
-/////////////////////////////////////////////////////
-
-#include "AliSegmentation.h"
-
-class TArrayI;
-class TObjArray;
-
-class AliMUONSegmentationSlatModule;
-class AliMUONChamber;
-
-class AliMUONSegmentationSlat : public AliSegmentation
-{
- public:
- AliMUONSegmentationSlat();
- AliMUONSegmentationSlat(Int_t nsec);
- virtual ~AliMUONSegmentationSlat();
- //
- // Set Chamber Segmentation Parameters
- //
- // Pad size Dx*Dy
- virtual void SetPadSize(Float_t p1, Float_t p2);
- // Anod Pitch
- virtual void SetDAnod(Float_t D) {fWireD = D;};
-
- // Anod wire coordinate closest to xhit
- virtual Float_t GetAnod(Float_t xhit) const;
-
- void SetPadDivision(Int_t ndiv[4]);
-
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z);
- // Initialisation
- virtual void Init(Int_t chamber);
- //
- // Get member data
- //
- //
- // Pad size in x
- virtual Float_t Dpx() const {return fDpx;}
-
- // Pad size in y
- virtual Float_t Dpy() const {return fDpy;}
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- // Maximum number of Pads in x
- virtual Int_t Npx() const {return fNpx;}
- // Maximum number of Pads in y
- virtual Int_t Npy() const {return fNpy;}
- //
- virtual void SetPad(Int_t ix,Int_t iy);
-
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- //
- // Iterate over pads
- // Initialiser
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
- // Stepper
- virtual void NextPad();
- // Condition
- virtual Int_t MorePads();
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- virtual Float_t Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, Float_t Y, Int_t *dummy);
- virtual void GetNParallelAndOffset(Int_t iX, Int_t iY, Int_t *Nparallel, Int_t *Offset);
- //
- // Current Pad during Integration
- // x-coordinate
- virtual Int_t Ix();
- // y-coordinate
- virtual Int_t Iy();
- // current sector
- virtual Int_t ISector();
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- virtual Int_t Sector(Float_t x, Float_t y)
- {
- Int_t ix, iy;
- GetPadI(x,y,0.,ix,iy);
- return Sector(ix,iy);
- }
-
- //
- // Signal Generation Condition during Stepping
- virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
- // Initialise signal generation at coord (x,y,z)
- virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
-
- //
- // Integration
- // Current integration limits
- virtual void IntegrationLimits
- (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
- //
- // Class specific methods
- virtual void SetNSlats(Int_t nslats) {fNSlats = nslats;}
- virtual void SetShift(Float_t shift) {fShift = shift;}
- virtual void SetNPCBperSector(Int_t *npcb);
- virtual void SetSlatXPositions(Float_t *xpos);
- virtual void SetSlatYPositions(Float_t *ypos);
- virtual AliMUONSegmentationSlatModule* Slat(Int_t index) const;
-
-// Not used
- // Test points for auto calibration
- virtual void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
- // Draw the segmentation zones
- virtual void Draw(const char *opt = "");
-
-
- // Function for systematic corrections
- // Set the correction function
- virtual void SetCorrFunc(Int_t, TF1*) {;}
-
- // Get the correction Function
- virtual TF1* CorrFunc(Int_t) const {return NULL;}
- protected:
- AliMUONSegmentationSlat(const AliMUONSegmentationSlat& rhs);
- AliMUONSegmentationSlat& operator=(const AliMUONSegmentationSlat& rhs);
-
- virtual void GlobalToLocal(
- Float_t x, Float_t y, Float_t z, Int_t &islat, Float_t &xlocal, Float_t &ylocal);
- virtual void GlobalToLocal(
- Int_t ix, Int_t iy, Int_t &islat, Int_t &ixlocal, Int_t &iylocal) const;
-
- virtual void LocalToGlobal (
- Int_t islat, Float_t xlocal, Float_t ylocal, Float_t &x, Float_t &y, Float_t &z) const;
- virtual void LocalToGlobal (
- Int_t islat, Int_t ixlocal, Int_t iylocal, Int_t &ix, Int_t &iy) const;
- virtual void SetSymmetry(Int_t ix);
- virtual void SetSymmetry(Float_t x);
- // Factory method for associated slat module class
- virtual AliMUONSegmentationSlatModule* CreateSlatModule() const;
-
- protected:
-
- AliMUONChamber* fChamber; // Parent Chamber
- Int_t fId; // Identifier
- //
- // Geometry
- //
- Float_t fWireD; // Wire Pitch
- Int_t fNSlats; // Number of slats
- Int_t fPcb[15][4]; // PcbSegmentation
- Float_t fXPosition[15]; // x-position of slats
- Float_t fYPosOrigin; // y-Position of lowest slat
- Float_t fYPosition[15]; // y-position of slats
- Float_t fSlatX[15]; // Slat x-dimension
- Float_t fSlatY; // Slat y-dimension
- Float_t fDpx; // Pad size x
- Float_t fDpy; // Pad size y
- Int_t fNpx; // maximum number of pads in x
- Int_t fNpy; // maximum number of pads in y
- Int_t fSym; // signs for symmetry trafo
- Float_t fShift; // Half overlap of pad planes
- Float_t fDzSlat; // Half distance between slat planes
- Float_t fDzCh; // Half distance between half-chamber planes
-
- TArrayI* fNDiv; // Pad size division
- // Slats
- TObjArray* fSlats; // Array of Slats
- // Proxy data
- AliMUONSegmentationSlatModule* fCurrentSlat; // Pointer to current slat
- Int_t fSlatIndex; // Current slat index
- ClassDef(AliMUONSegmentationSlat,2) // Segmentation for Muon Chamber built from Slat Modules
-};
-
-
-#endif
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONSLATMODULE_H
-#define ALIMUONSEGMENTATIONSLATMODULE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation classes for slat modules //
-// to be used with AluMUONSegmentationSlat //
-/////////////////////////////////////////////////////
-
-#include "AliMUONSegmentationV0.h"
-
-class TArrayF;
-class TArrayI;
-
-class AliMUONSegmentationSlatModule : public AliMUONSegmentationV0
-{
- public:
- AliMUONSegmentationSlatModule();
- AliMUONSegmentationSlatModule(Int_t nsec);
- virtual ~AliMUONSegmentationSlatModule();
-
- //
- // Set Chamber Segmentation Parameters
- //
- virtual void SetPadDivision(Int_t ndiv[4]);
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadC(ix, iy, x , y);}
- // Initialisation
- virtual void Init(Int_t chamber);
- // Set Segmentation Zones (PCB Boards)
- virtual void SetPcbBoards(Int_t n[4]);
- //
- // Get member data
- //
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- //
- virtual void SetPad(Int_t ix,Int_t iy);
- virtual void SetHit(Float_t xhit, Float_t yhit);
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- //
- // Iterate over pads
- // Initialiser
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
- // Stepper
- virtual void NextPad();
- // Condition
- virtual Int_t MorePads();
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- //
- // Current Pad during Integration
- // current sector
- virtual Int_t ISector() {return fSector;}
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- //
- // Integration
- // Current integration limits
- virtual void IntegrationLimits
- (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
- //
- virtual void SetId(Int_t id) {fId=id;}
-
- // Not implemented
- virtual void Draw(const char */*opt*/ = "") {}
-
- protected:
- AliMUONSegmentationSlatModule(const AliMUONSegmentationSlatModule& rhs);
- AliMUONSegmentationSlatModule& operator=(const AliMUONSegmentationSlatModule& rhs);
-
- //
- // Geometry
- //
- Int_t fNsec; // Number of sectors
- TArrayI* fNDiv; // Pad size division
- TArrayF* fDpxD; // y pad width per sector
-
- // Segmentation map
- Int_t fNpxS[10]; // Number of pads per sector in x
- Int_t fNpyS[10]; // Number of pads per sector in y
- Float_t fCx[10]; // pad-sector contour x vs y
- // Chamber region consideres during disintegration
- // (lower left and upper right corner)
- //
- Float_t fXmin; // lower left x
- Float_t fXmax; // lower left y
- Float_t fYmin; // upper right x
- Float_t fYmax; // upper right y
-
- //
- // Current pad during integration (cursor for disintegration)
- Int_t fSector; // Current sector
-
- Float_t fDxPCB; // x-size of PCB board
- Float_t fDyPCB; // y-size of PCB board
- Int_t fPcbBoards[4]; // number of PCB boards per segmentation region
-
- ClassDef(AliMUONSegmentationSlatModule,1) // Segmenation for bending plate slats
-
-};
-#endif
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONSLATMODULEN_H
-#define ALIMUONSEGMENTATIONSLATMODULEN_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation classes for slat modules //
-// to be used with AluMUONSegmentationSlat //
-/////////////////////////////////////////////////////
-
-#include "AliMUONSegmentationSlatModule.h"
-
-class AliMUONSegmentationSlatModuleN : public AliMUONSegmentationSlatModule
-{
- public:
- AliMUONSegmentationSlatModuleN();
- AliMUONSegmentationSlatModuleN(Int_t nsec);
- virtual ~AliMUONSegmentationSlatModuleN(){}
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
- // Initialisation
- virtual void Init(Int_t chamber);
- //
- // Get member data
- //
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- // Iterate over pads
- // Stepper
- virtual void NextPad();
- virtual Int_t MorePads();
-
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- protected:
- Int_t fNpxPCB; // Number of strips per PCB board
-
- ClassDef(AliMUONSegmentationSlatModuleN,1) // Segmentation class for non bending plane slat
-};
-
-#endif
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONSLATN_H
-#define ALIMUONSEGMENTATIONSLATN_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation classes for slat modules //
-// to be used with AluMUONSegmentationSlat //
-/////////////////////////////////////////////////////
-
-#include "AliMUONSegmentationSlat.h"
-
-//class TArrayF;
-//class TList;
-//class AliMUONSegmentationSlatModuleN;
-
-
-class AliMUONSegmentationSlatN : public AliMUONSegmentationSlat
-{
- public:
- AliMUONSegmentationSlatN();
- AliMUONSegmentationSlatN(Int_t nsec);
- virtual ~AliMUONSegmentationSlatN(){}
- //
- // Set Chamber Segmentation Parameters
- //
- // Transform from pad to real coordinates and vice versa
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- //
- // Get member data
- //
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- //
- //
- // Class specific methods
- virtual void GlobalToLocal(
- Int_t ix, Int_t iy, Int_t &islat, Int_t &ixlocal, Int_t &iylocal) const;
- virtual void LocalToGlobal(
- Int_t islat, Int_t ixlocal, Int_t iylocal, Int_t &ix, Int_t &iy) const;
- // Factory method for associated slat module class
- AliMUONSegmentationSlatModule* CreateSlatModule() const;
- private:
- ClassDef(AliMUONSegmentationSlatN,1) // Segmentation for Muon Chamber built from Slat Modules
-
-};
-
-
-#endif
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONTRIGGER_H
-#define ALIMUONSEGMENTATIONTRIGGER_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-//----------------------------------------------
-//
-// Chamber segmentation virtual base class
-//
-
-#include "AliMUONSegmentationV0.h"
-
-class AliMUONChamber;
-
-class AliMUONSegmentationTrigger : public AliMUONSegmentationV0
-{
- public:
- AliMUONSegmentationTrigger();
- virtual ~AliMUONSegmentationTrigger(){}
- virtual void Init(Int_t chamber); // Initialization
- Int_t ModuleNumber(Int_t imodule); // returns module number of ModuleId
- // Set pad position -> in SegRes X & Y
- // virtual void SetPad(Int_t, Int_t);
- // Set hit position
- virtual void SetHit(Float_t xhit, Float_t yhit);
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- // Draw the segmentation zones
- virtual void Draw(const char *opt="");
-
- protected:
- Int_t fId; // Identifier
-
- protected:
- Float_t StripSizeX(Int_t imodule);
- Float_t StripSizeY(Int_t imodule, Int_t istrip);
- protected:
- Float_t fYcmin[126]; // y min position of modules
- Float_t fYcmax[126]; // y max position of modules
- Float_t fZscale; // scaling factor (Zx/Z1, x=1,2,3,4)
-
-// Current pad during integration (cursor for disintegration)
- Int_t fSector;// Segmentation Sector
-
- ClassDef(AliMUONSegmentationTrigger,1) //Segmentation class for trigger
-};
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONTRIGGERX_H
-#define ALIMUONSEGMENTATIONTRIGGERX_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-//----------------------------------------------
-//
-// Chamber segmentation virtual base class
-//
-
-#include "AliMUONSegmentationTrigger.h"
-
-class AliMUONChamber;
-
-class AliMUONSegmentationTriggerX : public AliMUONSegmentationTrigger
-{
- public:
- AliMUONSegmentationTriggerX(){}
- virtual ~AliMUONSegmentationTriggerX(){}
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x, Float_t y, Int_t &ix, Int_t &iy);
- virtual void GetPadI(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=-10000.; GetPadC(ix, iy, x , y);}
- // Draw the segmentation zones
- virtual void Draw(const char *opt = "");
-
- // Pad size Dx*Dy
- virtual void SetPadSize(Float_t dp1, Float_t dp2);
- // Strip size
- virtual Float_t Dpx(Int_t imodule) const;
- virtual Float_t Dpy(Int_t imodule) const;
- // Set pad position
- virtual void SetPad(Int_t ix, Int_t iy);
- // Set hit position
- virtual void SetHit(Float_t xhit, Float_t yhit);
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- // Current integration parameters
- virtual void IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& x3, Float_t& x4);
- // Current Pad during Integration
- // x-coordinate
- virtual Int_t Ix();
- // y-coordinate
- virtual Int_t Iy();
- // Sector
- virtual Int_t ISector();
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
-
- //
- // Initialisation
- virtual void Init(Int_t chamber);
-
- ClassDef(AliMUONSegmentationTriggerX,1) //Segmentation class for trigger X
-
- protected:
- void IntegrationParam(Float_t& x1, Float_t& x2, Float_t& y1);
-// Geometry Parameters
- float fXofxsmin[126][64]; // x-min
- float fXofxsmax[126][64]; // x-max
- float fYofxsmin[126][64]; // y-min
- float fYofxsmax[126][64]; // y-max
-};
-#endif
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONTRIGGERY_H
-#define ALIMUONSEGMENTATIONTRIGGERY_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-//----------------------------------------------
-//
-// Chamber segmentation virtual base class
-//
-
-#include "AliMUONSegmentationTrigger.h"
-
-class AliMUONChamber;
-
-class AliMUONSegmentationTriggerY : public AliMUONSegmentationTrigger
-{
- public:
- AliMUONSegmentationTriggerY();
- virtual ~AliMUONSegmentationTriggerY(){}
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy);
- virtual void GetPadI(Float_t x, Float_t y, Float_t z, Int_t &ix, Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x,Float_t &y);
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=-10000.; GetPadC(ix, iy, x , y);}
- // Pad size Dx*Dy
- virtual void SetPadSize(Float_t dp1, Float_t dp2);
- // Strip size by Module
- virtual Float_t Dpx(Int_t imodule) const;
- virtual Float_t Dpy(Int_t imodule) const;
- // Set pad position
- virtual void SetPad(Int_t ix, Int_t iy);
- // Set hit position
- virtual void SetHit(Float_t xhit , Float_t yhit);
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- // Current integration parameters
- virtual void IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& x3, Float_t& x4);
- // Current Pad during Integration
- // x-coordinate
- virtual Int_t Ix();
- // y-coordinate
- virtual Int_t Iy();
- // Sector
- virtual Int_t ISector();
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
-
-
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- //
- // Initialisation
- virtual void Init(Int_t chamber);
-
- ClassDef(AliMUONSegmentationTriggerY,1) //Segmentation class for trigger X
- protected:
- void IntegrationParam(Float_t& x1, Float_t& x2, Float_t& y1);
-
-// Geometry Parameters
- float fXofysmin[126][16]; // x-min
- float fXofysmax[126][16]; // x-max
- float fYofysmin[126][16]; // y-min
- float fYofysmax[126][16]; // y-max
-};
-#endif
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONV0_H
-#define ALIMUONSEGMENTATIONV0_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-//----------------------------------------------
-//
-// Chamber segmentation for homogeneously segmented circular chamber
-//
-
-#include "AliSegmentation.h"
-
-class AliMUONChamber;
-class TF1;
-
-class AliMUONSegmentationV0 : public AliSegmentation
-{
- public:
- AliMUONSegmentationV0();
- virtual ~AliMUONSegmentationV0(){}
-
- // Set Chamber Segmentation Parameters
- //
- // Pad size Dx*Dy
- virtual void SetPadSize(Float_t p1, Float_t p2);
- // Anod Pitch
- virtual void SetDAnod(Float_t D) {fWireD = D;};
- // Transform from pad (wire) to real coordinates and vice versa
- //
- // Anod wire coordinate closest to xhit
- virtual Float_t GetAnod(Float_t xhit) const;
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x, Float_t y , Int_t &ix, Int_t &iy) ;
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy) ;
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y) ;
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=fZ; GetPadC(ix, iy, x , y);}
- //
- // Initialisation
- // virtual void Init(Int_t chamber);
- //
- // Get member data
- //
- // Pad size in x
- virtual Float_t Dpx() const {return fDpx;}
- // Pad size in y
- virtual Float_t Dpy() const {return fDpy;}
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t) const {return fDpx;}
- // Pad size in y by Secto
- virtual Float_t Dpy(Int_t) const {return fDpy;}
- // Maximum number of Pads in x
- virtual Int_t Npx() const {return fNpx;}
- // Maximum number of Pads in y
- virtual Int_t Npy() const {return fNpy;}
- // Set pad position
- virtual void SetPad(Int_t ix, Int_t iy);
- // Set hit position
- virtual void SetHit(Float_t xhit, Float_t yhit);
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- // Iterate over pads
- // Initialiser
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
- // Stepper
- virtual void NextPad();
- // Condition
- virtual Int_t MorePads();
- //
- // Distance between 1 pad and a position
- virtual Float_t Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, Float_t Y, Int_t *
-dummy);
- // Number of pads read in parallel and offset to add to x
- // (specific to LYON, but mandatory for display)
- virtual void GetNParallelAndOffset(Int_t iX, Int_t iY, Int_t *Nparallel, Int_t *Offset);
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]) ;
- //
- // Current Pad during Integration
- // x-coordinaten
- virtual Int_t Ix() {return fIx;}
- // y-coordinate
- virtual Int_t Iy() {return fIy;}
- // current sector
- virtual Int_t ISector() {return 1;}
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- virtual Int_t Sector(Float_t x, Float_t y);
- //
- // Signal Generation Condition during Stepping
- virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z) ;
- // Initialise signal gneration at coord (x,y,z)
- virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
- // Current integration limits
- virtual void IntegrationLimits
- (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
- // Test points for auto calibration
- virtual void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
- // Draw segmentation zones
- // virtual void Draw(const char *opt="");
- // Function for systematic corrections
- // Set the correction function
- virtual void SetCorrFunc(Int_t dum, TF1* func);
- // Get the correction Function
- virtual TF1* CorrFunc(Int_t) const {return fCorr;}
-
- ClassDef(AliMUONSegmentationV0,1) //Class for homogeneous segmentation
-
- protected:
- AliMUONSegmentationV0(const AliMUONSegmentationV0 & segmentation);
- // assignment operator
- AliMUONSegmentationV0& operator=(const AliMUONSegmentationV0& rhs);
-
- //
- // Implementation of the segmentation class:
- // Version 0 models rectangular pads with the same dimensions all
- // over the cathode plane. Chamber has circular geometry.
- //
- // Geometry parameters
- //
- Float_t fDpx; // x pad width per sector
- Float_t fDpy; // y pad base width
- Int_t fNpx; // Number of pads in x
- Int_t fNpy; // Number of pads in y
- Float_t fWireD; // wire pitch
- Float_t fRmin; // inner radius
- Float_t fRmax; // outer radius
-
-
- // Chamber region consideres during disintegration
- Int_t fIxmin; // ! lower left x
- Int_t fIxmax; // ! lower left y
- Int_t fIymin; // ! upper right x
- Int_t fIymax; // ! upper right y
- //
- // Current pad during integration (cursor for disintegration)
- Int_t fIx; // ! pad coord. x
- Int_t fIy; // ! pad coord. y
- Float_t fX; // ! real coord. x
- Float_t fY; // ! real ccord. y
- //
- // Current pad and wire during tracking (cursor at hit centre)
- //
- //
- Float_t fXhit; // ! x-position of hit
- Float_t fYhit; // ! y-position of hit
- // Reference point to define signal generation condition
- Int_t fIxt; // ! pad coord. x
- Int_t fIyt; // ! pad coord. y
- Int_t fIwt; // ! wire number
- Float_t fXt; // ! x
- Float_t fYt; // ! y
- TF1* fCorr; // ! correction function
- //
- AliMUONChamber* fChamber; // ! Reference to mother chamber
- Int_t fId; // Identifier
- Float_t fZ; // z-position of chamber
-};
-#endif
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONV01_H
-#define ALIMUONSEGMENTATIONV01_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation and Response classes version 01 //
-/////////////////////////////////////////////////////
-
-#include <TArrayF.h> // needed for CINT
-#include <TArrayI.h> // needed for CINT
-
-#include "AliMUONSegmentationV0.h"
-
-class TObjArray;
-
-class AliMUON;
-
-class AliMUONSegmentationV01 : public AliMUONSegmentationV0
-{
- public:
- AliMUONSegmentationV01();
- AliMUONSegmentationV01(Int_t nsec);
- virtual ~AliMUONSegmentationV01();
-
- //
- // Set Chamber Segmentation Parameters
- //
- virtual void SetPadDivision(Int_t ndiv[4]);
- // Radii
- virtual void SetSegRadii(Float_t r[4]);
- virtual void SetOffsetY(Float_t off) {fOffsetY = off;}
- //
- // Transform from pad (wire) to real coordinates and vice versa
- //
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- // Transform from real to pad coordinates
- virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z);
- //
- // Initialisation
- virtual void Init(Int_t chamber);
- //
- // Get member data
- //
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- // Max number of Pads in x
- virtual Int_t Npx() const {return fNpxS[fNsec-1][1]+1;}
- //
- virtual void SetPad(Int_t ix,Int_t iy);
- //
- // Iterate over pads
- // Initialiser
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
- // Stepper
- virtual void NextPad();
- // Condition
- virtual Int_t MorePads();
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- //
- // Current Pad during Integration
- // current sector
- virtual Int_t ISector() {return fSector;}
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- //
- // Integration
- // Current integration limits
- virtual void IntegrationLimits
- (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
- // Test points for auto calibration
- void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
- //
- // Draw segmentation zones
- virtual void Draw(const char *opt="");
- // Function for systematic corrections
- // Set the correction function
- virtual void SetCorrFunc(Int_t dum, TF1* func);
- // Get the correction function
- virtual TF1* CorrFunc(Int_t iZone) const;
- ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
-
- protected:
- AliMUONSegmentationV01(const AliMUONSegmentationV01 & segmentation);
- // assignment operator
- AliMUONSegmentationV01& operator=(const AliMUONSegmentationV01& rhs);
-
- // Geometry
- //
- Int_t fNsec; // Number of sectors
- TArrayF* fRSec; // Sector outer radia
- TArrayI* fNDiv; // Pad size division
- TArrayF* fDpxD; // y pad width per sector
- Float_t fOffsetY; // Staggering offset in y
- // Segmentation map
- Int_t fNpxS[10][1000]; // Number of pads per sector in x
- Float_t fCx[10][1000]; // pad-sector contour x vs y
- // Chamber region consideres during disintegration
- // (lower left and upper right corner)
- //
- Float_t fXmin; // ! lower left x
- Float_t fXmax; // ! lower left y
- Float_t fYmin; // ! upper right x
- Float_t fYmax; // ! upper right y
-
- //
- // Current pad during integration (cursor for disintegration)
- Int_t fSector; // ! Current sector
- //
- TObjArray *fCorrA; // ! Array of correction functions
-};
-#endif
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIMUONSEGMENTATIONV02_H
-#define ALIMUONSEGMENTATIONV02_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-/////////////////////////////////////////////////////
-// Segmentation and Response classes version 02 //
-/////////////////////////////////////////////////////
-
-
-#include "AliMUONSegmentationV01.h"
-
-class AliMUONSegmentationV02 : public AliMUONSegmentationV01
-{
- public:
- AliMUONSegmentationV02();
- AliMUONSegmentationV02(Int_t nsec);
-
- virtual ~AliMUONSegmentationV02(){}
- //
- // Pad size Dx*Dy
- virtual void SetPadSize(Float_t p1, Float_t p2);
- //
- // Get member data
- // Pad size in x
- virtual Float_t Dpx() const {return fDpy;}
- // Pad size in y
- virtual Float_t Dpy() const {return fDpx;}
- // Pad size in x by Sector
- virtual Float_t Dpx(Int_t isec) const;
- // Pad size in y by Sector
- virtual Float_t Dpy(Int_t isec) const;
- // Max number of Pads in x
- virtual Int_t Npx() const;
- // max number of Pads in y
- virtual Int_t Npy() const;
- // calculate sector from pad coordinates
- virtual Int_t Sector(Int_t ix, Int_t iy);
- virtual void Draw(const char *opt="") const;
- //
- // Transform from pad (wire) to real coordinates and vice versa
- // Transform from pad to real coordinates
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x ,Float_t &y );
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=fZ; GetPadC(ix, iy, x , y);}
- // Transform from pad to real coordinates
- virtual void GetPadI(Float_t x ,Float_t y , Int_t &ix, Int_t &iy);
- virtual void GetPad(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- // Set pad position
- virtual void SetPad(Int_t ix,Int_t iy);
- // Stepper
- virtual void NextPad();
- // Condition
- virtual Int_t MorePads();
- // Get next neighbours
- virtual void Neighbours
- (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- // Get next neighbours
- ClassDef(AliMUONSegmentationV02,1) // Segmentation approximating circular zones with different pad size
- };
-#endif
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALI_MUON_ST1_SEGMENTATION_H
-#define ALI_MUON_ST1_SEGMENTATION_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-// Revision of includes 07/05/2004
-
-// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
-//
-// Class AliMUONSt1Segmentation
-// -----------------------------
-// Segmentation for MUON station 1 using the external
-// mapping package
-
-#include "AliMpPlaneType.h"
-
-#include "AliSegmentation.h"
-
-class TObjArray;
-
-class AliMpPlane;
-class AliMpPlaneSegmentation;
-class AliMpVPadIterator;
-class AliMpPad;
-
-class AliMUONChamber;
-
-class AliMUONSt1Segmentation : public AliSegmentation
-{
- public:
- AliMUONSt1Segmentation(const AliMpPlaneType planeType);
- AliMUONSt1Segmentation();
-
- virtual ~AliMUONSt1Segmentation();
-
- //
- // methods derived from base class
- //
-
- // Set Chamber Segmentation Parameters
- //
- virtual void SetPadSize(Float_t p1, Float_t p2);
- // Pad size Dx*Dy
- virtual void SetDAnod(Float_t D);
- // Anode Pitch
-
- // Transform from pad (wire) to real coordinates and vice versa
- //
- virtual Float_t GetAnod(Float_t xhit) const;
- // Anode wire coordinate closest to xhit
- virtual void GetPadI(Float_t x, Float_t y, Float_t z, Int_t& ix, Int_t& iy);
- virtual void GetPadI(Float_t x, Float_t y , Int_t &ix, Int_t &iy) ;
- // Transform from pad to real coordinates
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t& x, Float_t& y, Float_t& z);
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t& x, Float_t& y);
- // Transform from real to pad coordinates
-
-
- // Initialisation
- //
- virtual void Init(Int_t chamber);
-
- // Get member data
- //
- virtual Float_t Dpx() const;
- virtual Float_t Dpy() const;
- // Pad size in x, y
- virtual Float_t Dpx(Int_t isector) const;
- virtual Float_t Dpy(Int_t isector) const;
- // Pad size in x, y by Sector
- virtual Int_t Npx() const;
- virtual Int_t Npy() const;
- // Maximum number of Pads in y
-
- virtual void SetPad(Int_t ix, Int_t iy);
- // Set pad position
- virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
- // Set hit position
-
- // Iterate over pads
- //
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit,
- Float_t dx, Float_t dy);
- virtual void NextPad();
- virtual Int_t MorePads();
-
- virtual Float_t Distance2AndOffset(Int_t iX, Int_t iY,
- Float_t X, Float_t Y, Int_t* dummy) ;
- // Distance between 1 pad and a position
- virtual void GetNParallelAndOffset(Int_t iX, Int_t iY,
- Int_t* Nparallel, Int_t* Offset);
- // Number of pads read in parallel and offset to add to x
- // (specific to LYON, but mandatory for display)
- virtual void Neighbours(Int_t iX, Int_t iY,
- Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
- // Get next neighbours
-
- // Current values
- //
- virtual Int_t Ix();
- virtual Int_t Iy();
- // Current pad cursor during disintegration
- // x, y-coordinate
- virtual Int_t ISector();
- // current sector
-
- virtual Int_t Sector(Int_t ix, Int_t iy);
- virtual Int_t Sector(Float_t x, Float_t y);
- // calculate sector from pad coordinates
-
- virtual void IntegrationLimits(Float_t& x1, Float_t& x2,
- Float_t& y1, Float_t& y2);
- // Current integration limits
-
- // Signal Generation
- //
- virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
- // Signal Generation Condition during Stepping
- virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
- // Initialise signal generation at coord (x,y,z)
-
-
- virtual void GiveTestPoints(Int_t& n, Float_t* x, Float_t* y) const;
- // Test points for auto calibration
- virtual void Draw(const char *opt = "");
- // Draw the segmentation zones
-
- // Function for systematic corrections
- //
- virtual void SetCorrFunc(Int_t isec, TF1* func);
- // Set the correction function
- virtual TF1* CorrFunc(Int_t isec) const;
- // Get the correction Function
-
- protected:
- AliMUONSt1Segmentation(const AliMUONSt1Segmentation& rhs);
-
- // operators
- AliMUONSt1Segmentation& operator=(const AliMUONSt1Segmentation & rhs);
-
- private:
- // methods
- void UpdateCurrentPadValues(const AliMpPad& pad);
-
- // constants
- static const Float_t fgkWireD; // default wire pitch
- static const Float_t fgkLengthUnit;// conversion between length units
- // from mapping (mm) to AliRoot (cm)
-
- // data members
-
- // From mapping
- //
- AliMpPlane* fPlane; // plane (from mapping)
- AliMpPlaneSegmentation* fPlaneSegmentation;// plane segmantation (from mapping)
- AliMpVPadIterator* fPlaneIterator; // ! iterator over pads
-
- // Wire pitch
- //
- Float_t fWireD; // wire pitch
- // (smaller distance between anode wires)
-
- // Reference to mother chamber
- //
- AliMUONChamber* fChamber; // ! Reference to mother chamber
- Int_t fId; // Identifier
- Float_t fRmin; // inner radius
- Float_t fRmax; // outer radius
- Float_t fZ; // z-position of chamber
-
- // Current pad during integration (cursor for disintegration)
- //
- Int_t fIx; // ! pad coord. x
- Int_t fIy; // ! pad coord. y
- Float_t fX; // ! real coord. x
- Float_t fY; // ! real ccord. y
- Int_t fSector; // ! Current sector
-
- // Current pad and wire during tracking (cursor at hit centre)
- //
- Float_t fXhit; // ! x-position of hit
- Float_t fYhit; // ! y-position of hit
-
- // Reference point to define signal generation condition
- //
- Int_t fIxt; // ! pad coord. x
- Int_t fIyt; // ! pad coord. y
- Int_t fIwt; // ! wire number
- Float_t fXt; // ! x
- Float_t fYt; // ! y
-
- TObjArray* fCorrA; // ! Array of correction functions
-
- ClassDef(AliMUONSt1Segmentation,1) // Station1 segmentation
-};
-
-#endif //ALI_MUON_ST1_SEGMENTATION_H
-
-
-
-
-
-
-
-