fChambers(0),
fTriggerCircuits(0),
fGeometryBuilder(0),
- fSegmentationType(2),// set to 2 default wise new seg
fDEIndexing(0),
fAccCut(kFALSE),
fAccMin(0.),
fChambers(0),
fTriggerCircuits(0),
fGeometryBuilder(0),
- fSegmentationType(2),// set to 2 default wise new seg
fDEIndexing(0),
fAccCut(kFALSE),
fAccMin(0.),
{
// Geometry for event display
- if (!fSegmentationType) {
- AliFatal("No Segmentation Type defined.");
- return;
- }
-
// for (Int_t i = 0; i < AliMUONConstants::NCh(); i++)
// this->Chamber(i).SegmentationModel2(1)->Draw("eventdisplay");// to be check !
virtual void SetSegmentationModel(Int_t id, Int_t isec,
AliMUONGeometrySegmentation* segmentation);
- void SetSegmentationType(Int_t type) {fSegmentationType = type;}// 1 for old 2 for new, 0 undefined
- Int_t WhichSegmentation() {return fSegmentationType; }
-
virtual void SetResponseModel(Int_t id, AliMUONResponse *response);
virtual void SetNsec(Int_t id, Int_t nsec);
TObjArray* fChambers; // List of Tracking Chambers
TObjArray* fTriggerCircuits; // List of Trigger Circuits
AliMUONGeometryBuilder* fGeometryBuilder; // Geometry builder
- Int_t fSegmentationType; // type for segmentation
AliMUONGeometryDEIndexing* fDEIndexing; // Geometry DE indexing
//
{
// Default constructor
fInput=AliMUONClusterInput::Instance();
-// cout << " TYPE" << fSegmentationType << endl;
fHitMap[0] = 0;
fHitMap[1] = 0;
fTrack[0]=fTrack[1]=-1;
// Return if no input datad available
if (!fInput->NDigits(0) && !fInput->NDigits(1)) return;
- if(fInput->GetSegmentationType() == 1)
- AliFatal("Old Segmentation no more supported.");
-
fSeg2[0] = fInput->Segmentation2(0);
fSeg2[1] = fInput->Segmentation2(1);
class AliMUONClusterInput;
class AliMUONHitMapA1;
-class AliSegmentation;
class AliMUONGeometrySegmentation;
class AliMUONRawCluster;
class AliMUONDigit;
: TObject(),
fCluster(0),
fChargeCorrel(1.),
- fSegmentationType(2),
fDetElemId(0)
{
iChamber = &(pMUON->Chamber(chamber));
fgMathieson = new AliMUONMathieson();
- if ((fSegmentationType = pMUON->WhichSegmentation()) != 2)
- AliFatal("Wrong segmentation type");
fSegmentation2[0]=iChamber->SegmentationModel2(1);
fSegmentation2[1]=iChamber->SegmentationModel2(2);
pMUON = (AliMUON*) gAlice->GetModule("MUON");
iChamber = &(pMUON->Chamber(chamber));
- if ((fSegmentationType = pMUON->WhichSegmentation()) != 2)
- AliFatal("Wrong segmentation type");
fSegmentation2[0]=iChamber->SegmentationModel2(1);
class AliMUONDigit;
class AliMUONRawCluster;
-class AliSegmentation;
class AliMUONMathieson;
class AliMUONClusterInput : public TObject
AliMUONMathieson* Mathieson() const {return fgMathieson;}
Float_t ChargeCorrel() const {return fChargeCorrel;}
Int_t DetElemId() const {return fDetElemId;}
- Int_t GetSegmentationType() const {return fSegmentationType;}
// Fitting
TMinuit* Fitter() const {return fgMinuit;}
Float_t fQtot[2]; // ! Total charge
Float_t fZ; // ! Current z-position
Float_t fChargeCorrel; // ! charge correlation
- Int_t fSegmentationType;// ! Segmentation type old or new
Int_t fDetElemId; // ! detection elt id
// Fitter
return *this;
}
-
-//------------------------------------------------------------------------
-void AliMUONDigitizer::CheckSegmentation()
-{
- if (fMUON->WhichSegmentation()==1) {
- AliFatal("Old Segmentation no more supported.");
- return;
- }
-
-}
//------------------------------------------------------------------------
Bool_t AliMUONDigitizer::Init()
// two HitMaps per chamber, or one HitMap per cahtode plane
fHitMap = new AliMUONHitMapA1* [2*AliMUONConstants::NDetElem()];
for (Int_t i=0; i<2*AliMUONConstants::NDetElem(); i++) fHitMap[i] = 0x0;
- CheckSegmentation(); // check it one for all
Int_t k = 0;
Int_t idDE;
virtual void AddDigitTrigger(
Int_t chamber, Int_t tracks[kMAXTRACKS],
Int_t charges[kMAXTRACKS], Int_t digits[6],
- Int_t digitindex
- ) = 0;
- virtual void CheckSegmentation();
+ Int_t digitindex ) = 0;
AliRunLoader* fRunLoader; //! Global run loader.
AliMUONLoader* fGime; //! MUON specific loader.
Float_t thetax = TMath::ATan2( x11 , z11 );
Float_t thetay = TMath::ATan2( (y21-y11) , (z21-z11) );
- recTriggerTrack = new AliMUONTriggerTrack(x11,y11,thetax,thetay,gloTrigPat,this);
+ recTriggerTrack = new AliMUONTriggerTrack(x11,y11,thetax,thetay,gloTrigPat);
// since static statement does not work, set gloTrigPat for each track
- // fNRecTriggerTracks++;
fMUONData->AddRecTriggerTrack(*recTriggerTrack);
} // end of loop on Local Trigger
return kTRUE;
#include <TRandom.h>
#include "AliMUONMathieson.h"
-#include "AliSegmentation.h"
#include "AliMUONGeometrySegmentation.h"
Float_t cy1 = fKy2 * fSqrtKy3 / 4. / TMath::ATan(Double_t(fSqrtKy3));
fKy4 = cy1 / fKy2 / fSqrtKy3;
}
-// -------------------------------------------
-Float_t AliMUONMathieson::IntXY(AliSegmentation * segmentation)
-{
-// Calculate charge on current pad according to Mathieson distribution
-//
- const Float_t kInversePitch = 1/fPitch;
-//
-// Integration limits defined by segmentation model
-//
- Float_t xi1, xi2, yi1, yi2;
- segmentation->IntegrationLimits(xi1,xi2,yi1,yi2);
- xi1=xi1*kInversePitch;
- xi2=xi2*kInversePitch;
- yi1=yi1*kInversePitch;
- yi2=yi2*kInversePitch;
-//
-// The Mathieson function
- Double_t ux1=fSqrtKx3*TMath::TanH(fKx2*xi1);
- Double_t ux2=fSqrtKx3*TMath::TanH(fKx2*xi2);
- Double_t uy1=fSqrtKy3*TMath::TanH(fKy2*yi1);
- Double_t uy2=fSqrtKy3*TMath::TanH(fKy2*yi2);
-
-
- return Float_t(4.*fKx4*(TMath::ATan(ux2)-TMath::ATan(ux1))*
- fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1)));
-}
// -------------------------------------------
Float_t AliMUONMathieson::IntXY(Int_t idDE, AliMUONGeometrySegmentation* segmentation)
{
/* $Id$ */
// Revision of includes 07/05/2004
-class AliSegmentation;
class AliMUONGeometrySegmentation;
class AliMUONMathieson
// Mathieson Ky4
void SetKy4(Float_t p1) {fKy4 = p1;};
// Charge disintegration
- Float_t IntXY(AliSegmentation * segmentation);
Float_t IntXY(Int_t id, AliMUONGeometrySegmentation* segmentation);
ClassDef(AliMUONMathieson,1) // Implementation of Mathieson response
#include <TObject.h>
class TF1;
-class AliSegmentation;
class AliMUONGeometrySegmentation;
class AliMUONTransientDigit;
// Pulse height from scored quantity (eloss)
virtual Float_t IntPH(Float_t) {return 1.;}
// Charge disintegration
- virtual Float_t IntXY(AliSegmentation *) {return 1.;}
virtual Float_t IntXY(Int_t, AliMUONGeometrySegmentation*) {return 1.;}
// Noise, zero-suppression, adc saturation
/* $Id$ */
-//#include <TMath.h>
-//#include <TRandom.h>
-//#include <Riostream.h>
#include "AliMUONResponseTrigger.h"
-//#include "AliSegmentation.h"
ClassImp(AliMUONResponseTrigger)
#include <TRandom.h>
#include "AliMUONResponseTriggerV1.h"
-#include "AliSegmentation.h"
#include "AliMUONGeometrySegmentation.h"
ClassImp(AliMUONResponseTriggerV1)
return 1;
}
-//------------------------------------------------------------------
-Float_t AliMUONResponseTriggerV1::IntXY(AliSegmentation * segmentation){
-// Returns 1 or 0 if the current strip is fired or not
-// get the "parameters" needed to evaluate the strip response
-// x1 : hit x(y) position
-// x2 : x(y) coordinate of the main strip
-// x3 : current strip real x(y) coordinate
-// x4 : dist. between x(y) hit pos. and the closest border of the current strip
-
- Float_t x1,x2,x3,x4;
- segmentation->IntegrationLimits(x1,x2,x3,x4);
- Float_t theta = 0.; // incident angle to be implemented
-
- return (fGenerCluster < FireStripProb(x4,theta)) ? 1:0;
-}
//------------------------------------------------------------------
Float_t AliMUONResponseTriggerV1::IntXY(Int_t idDE, AliMUONGeometrySegmentation * segmentation){
// Returns 1 or 0 if the current strip is fired or not
AliMUONResponseTriggerV1(Float_t hv);
virtual ~AliMUONResponseTriggerV1(){}
// Charge disintegration
- virtual Float_t IntXY(AliSegmentation * segmentation);
virtual Float_t IntXY(Int_t idDE, AliMUONGeometrySegmentation * segmentation);
// Set the GenerCluster parameter
#include <TRandom.h>
#include "AliMUONResponseV0.h"
-#include "AliSegmentation.h"
#include "AliMUONGeometrySegmentation.h"
ClassImp(AliMUONResponseV0)
}
return charge;
}
- //-------------------------------------------
-Float_t AliMUONResponseV0::IntXY(AliSegmentation * segmentation)
-{
- // Calculate charge on current pad according to Mathieson distribution
- return fMathieson->IntXY(segmentation);
-
-}
//-------------------------------------------
Float_t AliMUONResponseV0::IntXY(Int_t idDE, AliMUONGeometrySegmentation* segmentation)
{
// Pulse height from scored quantity (eloss)
virtual Float_t IntPH(Float_t eloss);
// Charge disintegration
- virtual Float_t IntXY(AliSegmentation * segmentation);
virtual Float_t IntXY(Int_t idDE, AliMUONGeometrySegmentation* segmentation);
// Noise, zero-suppression, adc saturation
virtual Int_t DigitResponse(Int_t digit, AliMUONTransientDigit* where);
// is RMS of ln(q1/q2)
AliMUONMathieson* fMathieson; // pointer to mathieson fct
-/* Float_t fSqrtKx3; // Mathieson Sqrt(Kx3) */
-/* Float_t fKx2; // Mathieson Kx2 */
-/* Float_t fKx4; // Mathieson Kx4 = Kx1/Kx2/Sqrt(Kx3) */
-/* Float_t fSqrtKy3; // Mathieson Sqrt(Ky3) */
-/* Float_t fKy2; // Mathieson Ky2 */
-/* Float_t fKy4; // Mathieson Ky4 = Ky1/Ky2/Sqrt(Ky3) */
-/* Float_t fPitch; // anode-cathode pitch */
};
#endif
fIdCircuit(0),
fX2m(0),
fX2ud(0)
- // fSegmentationType(1)
{
// Constructor
void AliMUONTriggerCircuit::Init(Int_t iCircuit) {
// initialize circuit characteristics
fIdCircuit=AliMUONTriggerConstants::CircuitId(iCircuit);
- AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
LoadX2();
LoadXCode();
LoadYCode();
- if (pMUON->WhichSegmentation() == 1)
- AliFatal("Old Segmentation no more supported.");
-
LoadXPos2();
LoadYPos2();
#include <TObject.h>
#include <TObjArray.h>
-class AliSegmentation;
class AliMUONGeometrtSegmentation;
class TObjArray;
Float_t fXpos11[16]; // X position of Y strips in MC11
Float_t fYpos11[31]; // Y position of X strips in MC11
Float_t fYpos21[63]; // Y position of X strips in MC21
- // Int_t fSegmentationType; // segmentation old / new
};
#endif
//__________________________________________________________________________
AliMUONTriggerTrack::AliMUONTriggerTrack()
- : TObject()
+ : TObject(),
+ fx11(0),
+ fy11(0),
+ fthetax(0),
+ fthetay(0),
+ fGTPattern(0)
+
{
- fEventReconstructor = 0;
- fx11 = 0.;
- fy11 = 0.;
- fthetax = 0.;
- fthetay = 0.;
- fGTPattern = 0;
+ // default ctr
}
//__________________________________________________________________________
-AliMUONTriggerTrack::AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay, Long_t theGTPattern, AliMUONEventReconstructor* EventReconstructor)
+AliMUONTriggerTrack::AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay, Long_t theGTPattern)
: TObject()
{
- fEventReconstructor = EventReconstructor; // link back to EventReconstructor
fx11 = x11;
fy11 = y11;
fthetax = thetax;
AliMUONTriggerTrack::AliMUONTriggerTrack (const AliMUONTriggerTrack& theMUONTriggerTrack)
: TObject(theMUONTriggerTrack)
{
- // fEventReconstructor = new AliMUONEventReconstructor(*MUONTriggerTrack.fEventReconstructor);
- fEventReconstructor = theMUONTriggerTrack.fEventReconstructor;
fx11 = theMUONTriggerTrack.fx11;
fy11 = theMUONTriggerTrack.fy11;
fthetax = theMUONTriggerTrack.fthetax;
// base class assignement
TObject::operator=(theMUONTriggerTrack);
- //fEventReconstructor = new AliMUONEventReconstructor(*theMUONTriggerTrack.fEventReconstructor);
- fEventReconstructor = theMUONTriggerTrack.fEventReconstructor;
fx11 = theMUONTriggerTrack.fx11;
fy11 = theMUONTriggerTrack.fy11;
fthetax = theMUONTriggerTrack.fthetax;
AliMUONTriggerTrack (const AliMUONTriggerTrack& AliMUONTriggerTrack); // copy constructor
AliMUONTriggerTrack& operator=(const AliMUONTriggerTrack& AliMUONTriggerTrack); // assignment operator
AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t thetax, Float_t thetay,
- Long_t theGTPattern, AliMUONEventReconstructor* eventReconstructor);
+ Long_t theGTPattern);
// Constructor
Float_t GetX11() const {return fx11;}
Float_t GetY11() const {return fy11;}
protected:
private:
- AliMUONEventReconstructor* fEventReconstructor; //! Pointer to EventReconstructor
Float_t fx11; // x position of fired Y strip in MC11
Float_t fy11; // y position of fired X strip in MC11
Float_t fthetax; // track theta angle in X
fGeometryBuilder->InitGeometry();
AliDebug(1,"Finished Init for version 1 - CPC chamber type");
- if (fSegmentationType == 1) {
- AliFatal("Old Segmentation no more supported");
- }
+ fFactory = new AliMUONFactoryV2("New MUON Factory");
+ AliInfo("New Segmentation");
- if (fSegmentationType == 2) {
- fFactory = new AliMUONFactoryV2("New MUON Factory");
- AliInfo("New Segmentation");
- }
fFactory->Build(this, "default");
//
// Initialize segmentation
//
- if (!fSegmentationType) {
- AliFatal("No Segmentation Type defined.");
- return;
- }
for (i=0; i<AliMUONConstants::NCh(); i++)
- ( (AliMUONChamber*) (*fChambers)[i])->Init(fSegmentationType);// new segmentation
+ ( (AliMUONChamber*) (*fChambers)[i])->Init(2);// new segmentation
// trigger circuit