#include "AliMUONGeometryModule.h"
#include "AliMUONGeometryStore.h"
#include "AliMUONGeometrySegmentation.h"
+#include "AliMUONVGeometryDEIndexing.h"
#include "AliMUONSt12QuadrantSegmentation.h"
#include "AliMUONSt345SlatSegmentation.h"
#include "AliMUONTriggerSegmentation.h"
return *this;
}
+//__________________________________________________________________________
+Bool_t AliMUONFactoryV2::IsGeometryDefined(Int_t ichamber)
+{
+// Return true, if det elements for the chamber with the given ichamber Id
+// are defined in geometry (the geometry builder for this chamber was activated)
+
+ if ( ! fMUON ||
+ ! fMUON->Chamber(ichamber).GetGeometry() ||
+ ! fMUON->Chamber(ichamber).GetGeometry()->GetDEIndexing() ||
+ ! fMUON->Chamber(ichamber).GetGeometry()->GetDEIndexing()->GetNofDetElements() )
+
+ return kFALSE;
+
+ return kTRUE;
+}
+
//__________________________________________________________________________
void AliMUONFactoryV2::BuildCommon()
{
fMUON->SetMaxStepGas(0.1);
fMUON->SetMaxStepAlu(0.1);
- // Build all stations
+ // Build stations
BuildCommon();
- BuildStation1();
- BuildStation2();
- BuildStation3();
- BuildStation4();
- BuildStation5();
- BuildStation6();
+ if (IsGeometryDefined(0)) BuildStation1();
+ if (IsGeometryDefined(2)) BuildStation2();
+ if (IsGeometryDefined(4)) BuildStation3();
+ if (IsGeometryDefined(6)) BuildStation4();
+ if (IsGeometryDefined(8)) BuildStation5();
+ if (IsGeometryDefined(10)) BuildStation6();
}
else
AliDebug(0,"Non default version of MUON selected. You have to construct yourself the MUON elements !!");
AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
AliMUONChamber* iChamber;
AliMUONGeometrySegmentation* segmentation;
-
+
// first plane (11)
chamber=11;
cathode=1;
iChamber = &(pMUON->Chamber(chamber-1));
segmentation=iChamber->SegmentationModel2(cathode);
+ if (!segmentation) {
+ AliWarning("Segmentation not defined.");
+ return;
+ }
+
for (istrip=0; istrip<16; istrip++) {
code=fXcode[0][istrip]; // decode current strip
idModule=Int_t(code/100); // corresponding module Id.
iChamber = &(pMUON->Chamber(chamber-1));
segmentation=iChamber->SegmentationModel2(cathode);
+ if (!segmentation) {
+ AliWarning("Segmentation not defined.");
+ return;
+ }
+
Int_t idModule=Module(fIdCircuit); // corresponding module Id.
// number of Y strips
idDE = DetElemId(chamber, idModule);