* See cxx source for full Copyright notice */
/* $Id$ */
+// Revision of includes 07/05/2004
-#include "TObjArray.h"
-#include "AliMUONSegmentation.h"
+#include <TObject.h>
+#include <TObjArray.h>
+
+#include "AliSegmentation.h"
#include "AliMUONResponse.h"
class AliMUONClusterFinderVS;
-//class AliMUONResponse ;
-//class AliMUONSegmentation ;
+class AliMUONGeometryModule;
-class AliMUONChamber:
-public TObject
+class AliMUONChamber : public TObject
{
public:
AliMUONChamber();
AliMUONChamber(Int_t id);
- AliMUONChamber(const AliMUONChamber & rChamber);
virtual ~AliMUONChamber();
//
-// Get GEANT id of sensitive volume
- virtual Int_t GetGid() {return fGid;}
-// Set GEANT id of sensitive volume
- virtual void SetGid(Int_t id) {fGid=id;}
-//
+// Get chamber Id
+ virtual Int_t GetId() const {return fId;}
+//
+
+// Get chamber Id
+ virtual Bool_t IsSensId(Int_t volId) const;
+
// Initialisation
virtual void Init();
// Set z-position of chamber
virtual void SetZ(Float_t Z) {fZ = Z;}
// Get z-position of chamber
- virtual Float_t Z(){return fZ;}
+ virtual Float_t Z() const {return fZ;}
// Set inner radius of sensitive volume
virtual void SetRInner(Float_t rmin) {frMin=rmin;}
// Set outer radius of sensitive volum
virtual void SetROuter(Float_t rmax) {frMax=rmax;}
// Return inner radius of sensitive volume
- virtual Float_t RInner() {return frMin;}
+ virtual Float_t RInner() const {return frMin;}
// Return outer radius of sensitive volum
- virtual Float_t ROuter() {return frMax;}
+ virtual Float_t ROuter() const {return frMax;}
//
// Set response model
virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
//
// Set segmentation model
- virtual void SetSegmentationModel(Int_t i, AliMUONSegmentation* thisSegmentation) {
- (*fSegmentation)[i-1] = thisSegmentation;
+ virtual void SetSegmentationModel(Int_t i, AliSegmentation* thisSegmentation) {
+ fSegmentation->AddAt(thisSegmentation,i-1);
}
// Set Cluster reconstruction model
virtual void SetReconstructionModel(AliMUONClusterFinderVS *thisReconstruction) {
virtual AliMUONResponse* &ResponseModel(){return fResponse;}
//
// Get reference to segmentation model
- virtual AliMUONSegmentation* SegmentationModel(Int_t isec) {
- return (AliMUONSegmentation *) (*fSegmentation)[isec-1];
+ virtual AliSegmentation* SegmentationModel(Int_t isec) {
+ return (AliSegmentation *) (*fSegmentation)[isec-1];
}
virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
// Get pointer to cluster reconstruction model
virtual AliMUONClusterFinderVS* &ReconstructionModel(){return fReconstruction;}
// Get number of segmentation sectors
- virtual Int_t Nsec() {return fnsec;}
+ virtual Int_t Nsec() const {return fnsec;}
// Set number of segmented cathodes (1 or 2)
virtual void SetNsec(Int_t nsec) {fnsec=nsec;}
//
//
// Initialisation of segmentation for hit
virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
+// Initialisation of charge fluctuation for given hit
+ virtual void ChargeCorrelationInit();
+
// Configuration forwarding
//
// Define signal distribution region
virtual void SetMaxAdc(Int_t p1) {fResponse->SetMaxAdc(p1);}
// Set Pad size
virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
- ((AliMUONSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
+ ((AliSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
}
//
// Cluster formation method (charge disintegration)
// Initialize geometry related parameters
virtual void InitGeo(Float_t z);
//
- virtual Float_t DGas() {return fdGas;}
- virtual Float_t DAlu() {return fdAlu;}
-// assignment operator
- virtual AliMUONChamber& operator =(const AliMUONChamber& rhs);
+ virtual Float_t DGas() const {return fdGas;}
+ virtual Float_t DAlu() const {return fdAlu;}
+ virtual void SetDGas(Float_t DGas) {fdGas = DGas;}
+ virtual void SetDAlu(Float_t DAlu) {fdAlu = DAlu;}
+ virtual void SetChargeCorrel(Float_t correl) {fResponse->SetChargeCorrel(correl);}
+
+// geometry
+ void SetGeometry(AliMUONGeometryModule* geometry) {fGeometry = geometry;}
+ AliMUONGeometryModule* GetGeometry() const {return fGeometry; }
+
protected:
+ AliMUONChamber(const AliMUONChamber & rChamber);
+ // assignment operator
+ AliMUONChamber& operator =(const AliMUONChamber& rhs);
+
Int_t fId; // chamber number
Float_t fdGas; // half gaz gap
Float_t fdAlu; // half Alu width
- Int_t fGid; // GEANT volume if for sensitive volume of this chamber
Float_t fZ; // Z position (cm)
Int_t fnsec; // number of semented cathode planes
Float_t frMin; // innermost sensitive radius
Float_t frMax; // outermost sensitive radius
+ Float_t fCurrentCorrel; //! charge correlation for current hit.
TObjArray *fSegmentation; // pointer to segmentation
AliMUONClusterFinderVS *fReconstruction; // pointer to reconstruction
AliMUONResponse *fResponse; // pointer to response
- ClassDef(AliMUONChamber,1) // Muon tracking chamber class
+ AliMUONGeometryModule *fGeometry; // pointer to geometry
+ ClassDef(AliMUONChamber,3) // Muon tracking chamber class
};
#endif