#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 "AliMUONRawWriter.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.),
fMaxDestepGas(0.),
fMaxDestepAlu(0.),
fMaxIterPad(0),
- fCurIterPad(0),
- fFactory(0)
+ fCurIterPad(0)
{
// Default Constructor
//
+ AliDebug(1,Form("default (empty) ctor this=%p",this));
fIshunt = 0;
}
fChambers(0),
fTriggerCircuits(0),
fGeometryBuilder(0),
- fDEIndexing(0),
+ fSegmentation(0),
fAccCut(kFALSE),
fAccMin(0.),
fAccMax(0.),
fMaxDestepGas(-1), // Negatives values are ignored by geant3 CONS200
fMaxDestepAlu(-1), // in the calculation of the tracking parameters
fMaxIterPad(0),
- fCurIterPad(0),
- fFactory(0)
+ fCurIterPad(0)
{
-
+ AliDebug(1,Form("ctor this=%p",this));
fIshunt = 0;
SetMarkerColor(kRed);//
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...)
AliMUON::~AliMUON()
{
// Destructor
- AliDebug(1,"Calling AliMUON destructor");
+ AliDebug(1,Form("dtor this=%p",this));
fIshunt = 0;
if (fChambers){
}
delete fMUONData;
delete fGeometryBuilder;
- delete fDEIndexing;
- delete fFactory;
+ 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)
+ void AliMUON::SetAlign(const TString& fileName, Bool_t align)
{
-// Set the segmentation for chamber id cathode isec
- ((AliMUONChamber*) fChambers->At(id))->SetSegmentationModel(isec, segmentation);
+ // Sets option for alignement to geometry builder
+
+ fGeometryBuilder->SetAlign(fileName, align);
+}
-}
//____________________________________________________________________
void AliMUON::SetResponseModel(Int_t id, AliMUONResponse *response)
{
((AliMUONChamber*) fChambers->At(id))->SetResponseModel(response);
}
//____________________________________________________________________
-void AliMUON::SetNsec(Int_t id, Int_t nsec)
-{
-// Set number of segmented cathods for chamber id
- ((AliMUONChamber*) fChambers->At(id))->SetNsec(nsec);
-}
-//____________________________________________________________________
AliDigitizer* AliMUON::CreateDigitizer(AliRunDigitizer* manager) const
{
return new AliMUONDigitizerv2(manager);
void AliMUON::Digits2Raw()
{
// convert digits of the current event to raw data
- AliMUONRawData* rawData;
+ AliMUONRawWriter* rawData;
- rawData = new AliMUONRawData(fLoader);
+ rawData = new AliMUONRawWriter(fLoader,fMUONData);
if (!rawData->Digits2Raw()) AliInfo("pb writting raw data");
delete rawData;
return;