#include "AliMUONRawCluster.h"
#include "AliMUONTransientDigit.h"
#include "AliMUONTriggerCircuit.h"
+#include "AliMUONGeometry.h"
+#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryBuilder.h"
#include "AliMUONCommonGeometryBuilder.h"
#include "AliMUONVGeometryBuilder.h"
-#include "AliMUONGeometryDEIndexing.h"
#include "AliMUONGeometrySegmentation.h"
#include "AliMUONDigitizerv2.h"
#include "AliMUONSDigitizerv1.h"
#include "AliMUONRawData.h"
-#include "AliMUONFactoryV2.h"
+#include "AliMUONSegmentation.h"
#include "AliLog.h"
// Defaults parameters for Z positions of chambers
fChambers(0),
fTriggerCircuits(0),
fGeometryBuilder(0),
- fDEIndexing(0),
+ fSegmentation(0),
fAccCut(kFALSE),
fAccMin(0.),
fAccMax(0.),
fChambers(0),
fTriggerCircuits(0),
fGeometryBuilder(0),
- fDEIndexing(0),
+ fSegmentation(0),
fAccCut(kFALSE),
fAccMin(0.),
fAccMax(0.),
fGeometryBuilder
->AddBuilder(new AliMUONCommonGeometryBuilder(this));
- // Define the global transformation:
- // Transformation from the old ALICE coordinate system to a new one:
- // x->-x, z->-z
- TGeoRotation* rotGlobal
- = new TGeoRotation("rotGlobal", 90., 180., 90., 90., 180., 0.);
- fGeometryBuilder
- ->SetGlobalTransformation (TGeoCombiTrans(0., 0., 0., rotGlobal));
-
- // Detection elements indexing
- fDEIndexing = new AliMUONGeometryDEIndexing();
-
//
// Creating List of Chambers
Int_t ch;
if (ch < AliMUONConstants::NTrackingCh()) {
fChambers->AddAt(new AliMUONChamber(ch),ch);
} else {
- fChambers->AddAt(new AliMUONChamberTrigger(ch),ch);
+ fChambers->AddAt(new AliMUONChamberTrigger(ch, GetGeometryTransformer()),ch);
}
- AliMUONChamber* chamber = (AliMUONChamber*) fChambers->At(ch);
- //chamber->SetGid(0);
- // Default values for Z of chambers
- chamber->SetZ(AliMUONConstants::DefaultChamberZ(ch));
- //
- chamber->InitGeo(AliMUONConstants::DefaultChamberZ(ch));
- // Set chamber inner and outer radius to default
- chamber->SetRInner(AliMUONConstants::Dmin(st)/2.);
- chamber->SetROuter(AliMUONConstants::Dmax(st)/2.);
- //
} // Chamber stCH (0, 1) in
} // Station st (0...)
}
delete fMUONData;
delete fGeometryBuilder;
- delete fDEIndexing;
+ delete fSegmentation;
}
//________________________________________________________________________
}
+//____________________________________________________________________
+const AliMUONGeometry* AliMUON::GetGeometry() const
+{
+// Return geometry parametrisation
+
+ if ( !fGeometryBuilder) {
+ AliWarningStream() << "GeometryBuilder not defined." << std::endl;
+ return 0;
+ }
+
+ return fGeometryBuilder->GetGeometry();
+}
+
+//____________________________________________________________________
+const AliMUONGeometryTransformer* AliMUON::GetGeometryTransformer() const
+{
+// Return geometry parametrisation
+
+ const AliMUONGeometry* kGeometry = GetGeometry();
+
+ if ( !kGeometry) return 0;
+
+ return kGeometry->GetTransformer();
+}
+
//__________________________________________________________________
void AliMUON::SetTreeAddress()
{
fHits = GetMUONData()->Hits(); // Added by Ivana to use the methods FisrtHit, NextHit of AliDetector
}
-//___________________________________________
-void AliMUON::SetChambersZ(const Float_t *Z)
-{
- // Set Z values for all chambers (tracking and trigger)
- // from the array pointed to by "Z"
- for (Int_t ch = 0; ch < AliMUONConstants::NCh(); ch++)
- ((AliMUONChamber*) fChambers->At(ch))->SetZ(Z[ch]);
- return;
-}
-//_________________________________________________________________
-void AliMUON::SetChambersZToDefault()
-{
- // Set Z values for all chambers (tracking and trigger)
- // to default values
- SetChambersZ(AliMUONConstants::DefaultChamberZ());
- return;
-}
//_________________________________________________________________
void AliMUON::SetChargeSlope(Int_t id, Float_t p1)
{
fGeometryBuilder->SetAlign(align);
}
-
-//____________________________________________________________________
-void AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliMUONGeometrySegmentation* segmentation)
-{
-// Set the segmentation for chamber id cathode isec
- ((AliMUONChamber*) fChambers->At(id))->SetSegmentationModel(isec, segmentation);
-}
//____________________________________________________________________
void AliMUON::SetResponseModel(Int_t id, AliMUONResponse *response)
{
class TTree;
class AliLoader;
-class AliMUONGeometrySegmentation;
class AliMUONTriggerCircuit;
class AliMUONData;
class AliMUONResponse;
+class AliMUONSegmentation;
class AliMUONHit;
class AliMUONRawCluster;
+class AliMUONGeometry;
+class AliMUONGeometryTransformer;
class AliMUONGeometryBuilder;
class AliMUONVGeometryBuilder;
-class AliMUONGeometryDEIndexing;
class AliESD;
class AliMUON : public AliDetector
AliMUON(const char *name, const char *title);
virtual ~AliMUON();
+ // Geometry
void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder);
virtual void BuildGeometry();
- AliMUONData* GetMUONData() {return fMUONData;}
- AliMUONGeometryBuilder* GetGeometryBuilder() {return fGeometryBuilder;}
virtual Int_t IsVersion() const {return 0;}
+
+ AliMUONGeometryBuilder* GetGeometryBuilder() const {return fGeometryBuilder;}
+ const AliMUONGeometryTransformer* GetGeometryTransformer() const;
+ AliMUONSegmentation* GetSegmentation() const { return fSegmentation; }
+
+ // MUONData
+ AliMUONData* GetMUONData() {return fMUONData;}
// MUONLoader definition
virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type)
// Configuration Methods (per station id)
//
- // Set Chamber Segmentation Parameters
- // id refers to the station and isec to the cathode plane
- // Set Z values for all chambers
- virtual void SetChambersZ(const Float_t *Z);
- virtual void SetChambersZToDefault(void);
// Set Signal Generation Parameters
virtual void SetSigmaIntegration(Int_t id, Float_t p1);
virtual void SetChargeSlope(Int_t id, Float_t p1);
virtual void SetChargeSpread(Int_t id, Float_t p1, Float_t p2);
virtual void SetMaxAdc(Int_t id, Int_t p1);
- // Set Segmentation and Response Model
- virtual void SetSegmentationModel(Int_t id, Int_t isec,
- AliMUONGeometrySegmentation* segmentation);
-
+ // Set Response Model
virtual void SetResponseModel(Int_t id, AliMUONResponse *response);
// Set Stepping Parameters
AliMUON(const AliMUON& rMUON);
AliMUON& operator = (const AliMUON& rhs);
+ const AliMUONGeometry* GetGeometry() const;
Int_t fNCh; // Number of chambers
Int_t fNTrackingCh; // Number of tracking chambers*
Int_t fSplitLevel; // Splitlevel when making branches in outfiles.
TObjArray* fChambers; // List of Tracking Chambers
TObjArray* fTriggerCircuits; // List of Trigger Circuits
- AliMUONGeometryBuilder* fGeometryBuilder; // Geometry builder
- AliMUONGeometryDEIndexing* fDEIndexing; // Geometry DE indexing
+ AliMUONGeometryBuilder* fGeometryBuilder; // Geometry builder
+ AliMUONSegmentation* fSegmentation; // New segmentation
//
Bool_t fAccCut; //Transport acceptance cut