X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RICH%2FAliRICHRecon.h;h=484539bb036f1750de11b40d9d03248442ef7995;hb=c1c3565214317f41570efa38c84cecf337ef86d6;hp=f08004aa4bfa8acdfecdc36147f8abb6eb424949;hpb=9eb3dcf5f063040b658c2b378323faf0c7e60a68;p=u%2Fmrichter%2FAliRoot.git diff --git a/RICH/AliRICHRecon.h b/RICH/AliRICHRecon.h index f08004aa4bf..484539bb036 100644 --- a/RICH/AliRICHRecon.h +++ b/RICH/AliRICHRecon.h @@ -4,350 +4,207 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ -#include -#include "AliRICH.h" -#include - -class AliRICH; - -class AliRICHRecon : public TTask { - public : - - AliRICHRecon(const char*, const char*); - ~AliRICHRecon(){EndProcessEvent();} - - AliRICH* Rich() {return fRich;} - void StartProcessEvent(); - void EndProcessEvent(); - - void InitRecon(); - - void PatRec(); - - void Minimization(); - - void FillHistograms(); - - void FindThetaPhotonCerenkov(); - void FindAreaAndPortionOfRing(); - - void FindEmissionPoint(); - - Int_t PhotonInBand(); - Float_t PhotonPositionOnCathode(); - - void FindPhotonAnglesInDRS(); - void FindPhiPoint(); - void FindThetaAtQuartz(Float_t ThetaCerenkov); - - Float_t FindMassOfParticle(); - - Float_t Cerenkovangle(Float_t n, Float_t beta); - - void HoughResponse(); - void HoughFiltering(float HCS[]); - void FlagPhotons(); - void FindWeightThetaCerenkov(); - - void EstimationOfTheta(); - void FindIntersectionWithDetector(); - Int_t CheckDetectorAcceptance(); - - void DrawRing(); - void DrawEvent(Int_t flag); - - void waiting(); - - ////////////////////////////////////// - Float_t GetEventVertexZ() { return fEventVertZ;} - Float_t GetEventMultiplicity() { return fEventMultiplicity;} - Float_t GetPhotonEnergy() { return fPhotonEnergy;} - Float_t GetFreonRefractiveIndex() { return fFreonRefractiveIndex;} - Float_t GetQuartzRefractiveIndex() { return fQuartzRefractiveIndex;} - Float_t GetGasRefractiveIndex() { return fGasRefractiveIndex;} - - Float_t GetFreonScaleFactor() { return fFreonScaleFactor;} - - Float_t GetEmissionPoint() { return fLengthEmissionPoint;} - Float_t GetMassHypotesis() { return fMassHypotesis;} - Float_t GetBetaOfParticle() { return fTrackBeta;} - Float_t GetEntranceX() { return fXtoentr;} - Float_t GetEntranceY() { return fYtoentr;} - Float_t GetThetaCerenkov() { return fThetaCerenkov;} - Float_t GetThetaPhotonCerenkov() { return fThetaPhotonCerenkov;} - Float_t GetTrackMomentum() { return fTrackMomentum;} - Float_t GetTrackEta() { return fTrackEta;} - Float_t GetTrackTheta() { return fTrackTheta;} - Float_t GetTrackPhi() { return fTrackPhi;} - Float_t GetTrackPt() { return fTrackPt;} - Int_t GetTrackCharge() { return fTrackCharge;} - Float_t GetTrackTPCLastZ() { return fTrackTPCLastZ;} - Float_t GetMinDist() { return fMinDist;} - Float_t GetXPointOnCathode() { return fPhotonLimitX;} - Float_t GetYPointOnCathode() { return fPhotonLimitY;} - - - Float_t GetThetaPhotonInDRS() { return fThetaPhotonInDRS;} - Float_t GetPhiPhotonInDRS() { return fPhiPhotonInDRS;} - Float_t GetThetaPhotonInTRS() { return fThetaPhotonInTRS;} - Float_t GetPhiPhotonInTRS() { return fPhiPhotonInTRS;} - - Float_t GetThetaAtQuartz() { return fThetaAtQuartz;} - - Float_t GetPhiPoint(){ return fPhiPoint;} - Float_t GetXCoordOfEmission() {return fXEmiss;} - Float_t GetYCoordOfEmission() {return fYEmiss;} - - Float_t GetXInnerRing() {return fXInner;} - Float_t GetYInnerRing() {return fYInner;} - Float_t GetRadiusInnerRing() {return fInnerRadius;} - - Float_t GetXOuterRing() {return fXOuter;} - Float_t GetYOuterRing() {return fYOuter;} - Float_t GetRadiusOuterRing() {return fOuterRadius;} - Float_t GetShiftX() { return fShiftX;} - Float_t GetShiftY() { return fShiftY;} - Float_t GetDetectorWhereX() { return fXcoord;} - Float_t GetDetectorWhereY() { return fYcoord;} - Float_t GetIntersectionX() {return fIntersectionX;} - Float_t GetIntersectionY() {return fIntersectionY;} - - Float_t GetThetaOfRing() { return fThetaOfRing;} - Float_t GetAreaOfRing() {return fAreaOfRing;} - Float_t GetPortionOfRing() {return fPortionOfRing;} - Float_t GetHoughArea() { return fHoughArea;} - - Int_t GetPhotonsNumber() { return fPhotonsNumber;} - Int_t GetPhotonIndex() { return fPhotonIndex;} - Float_t GetPhotonEta() { return fPhotonEta[fPhotonIndex];} - Int_t GetPhotonFlag() { return fPhotonFlag[fPhotonIndex];} - Float_t GetPhotonWeight() { return fPhotonWeight[fPhotonIndex];} - - Float_t GetHoughRMS() { return fHoughRMS;} - - Int_t GetMipIndex() { return fMipIndex;} - Int_t GetTrackIndex() { return fTrackIndex;} - Float_t* GetCandidatePhotonX() { return fCandidatePhotonX;} - Float_t* GetCandidatePhotonY() { return fCandidatePhotonY;} - Int_t GetCandidatePhotonsNumber() { return fCandidatePhotonsNumber;} - - Int_t GetHoughPhotons() { return fHoughPhotons;} - Float_t GetHoughPhotonsNorm() { return fHoughPhotonsNorm;} - - Float_t GetFittedTrackTheta() { return fFittedTrackTheta;} - Float_t GetFittedTrackPhi() { return fFittedTrackPhi;} - Float_t GetFittedThetaCerenkov() { return fFittedThetaCerenkov;} - Int_t GetFittedHoughPhotons() { return fFittedHoughPhotons;} - Float_t GetEstimationOfTheta() { return fEstimationOfTheta;} - Float_t GetEstimationOfThetaRMS() { return fEstimationOfThetaRMS;} - - void SetEventVertexZ(Float_t EventVertZ) { fEventVertZ = EventVertZ;} - void SetEventMultiplicity(Float_t EventMultiplicity) { fEventMultiplicity = EventMultiplicity;} - void SetPhotonEnergy(Float_t PhotonEnergy) { fPhotonEnergy = PhotonEnergy;} - void SetFreonRefractiveIndex() {fFreonRefractiveIndex = fFreonScaleFactor*(1.177+0.0172*fPhotonEnergy);} - void SetQuartzRefractiveIndex() {fQuartzRefractiveIndex = sqrt(1+(46.411/(113.763556-TMath::Power(fPhotonEnergy,2)))+(228.71/(328.51563-TMath::Power(fPhotonEnergy,2))));} - void SetGasRefractiveIndex() { fGasRefractiveIndex = 1.;} - - void SetFreonScaleFactor(Float_t FreonScaleFactor) {fFreonScaleFactor = FreonScaleFactor;} - - void SetEmissionPoint(Float_t LengthEmissionPoint) { fLengthEmissionPoint = LengthEmissionPoint;} - void SetMassHypotesis(Float_t mass) {fMassHypotesis = mass;} - - void SetBetaOfParticle() { fTrackBeta = fTrackMomentum/sqrt(TMath::Power(fTrackMomentum,2)+TMath::Power(fMassHypotesis,2));} - - void SetEntranceX(Float_t Xtoentr) { fXtoentr = Xtoentr;} - void SetEntranceY(Float_t Ytoentr) { fYtoentr = Ytoentr;} - - void SetThetaPhotonInTRS(Float_t Theta) {fThetaPhotonInTRS = Theta;} - void SetPhiPhotonInTRS(Float_t Phi) {fPhiPhotonInTRS = Phi;} - void SetThetaPhotonInDRS(Float_t Theta) {fThetaPhotonInDRS = Theta;} - void SetPhiPhotonInDRS(Float_t Phi) {fPhiPhotonInDRS = Phi;} - - void SetThetaAtQuartz(Float_t ThetaAtQuartz) {fThetaAtQuartz = ThetaAtQuartz;} - - void SetPhiPoint(Float_t PhiPoint){ fPhiPoint = PhiPoint;} - - void SetXCoordOfEmission(Float_t XEmiss) {fXEmiss = XEmiss;} - void SetYCoordOfEmission(Float_t YEmiss) {fYEmiss = YEmiss;} - - - void SetXPointOnCathode(Float_t PhotonLimitX) { fPhotonLimitX = PhotonLimitX;} - void SetYPointOnCathode(Float_t PhotonLimitY) { fPhotonLimitY = PhotonLimitY;} - - void SetXInnerRing(Float_t XInner) {fXInner = XInner;} - void SetYInnerRing(Float_t YInner) {fYInner = YInner;} - void SetRadiusInnerRing(Float_t InnerRadius) {fInnerRadius = InnerRadius;} - - void SetXOuterRing(Float_t XOuter) {fXOuter = XOuter;} - void SetYOuterRing(Float_t YOuter) {fYOuter = YOuter;} - void SetRadiusOuterRing(Float_t OuterRadius) {fOuterRadius = OuterRadius;} - - void SetThetaCerenkov(Float_t ThetaCer) {fThetaCerenkov = ThetaCer;} - void SetThetaPhotonCerenkov(Float_t ThetaPhotCer) {fThetaPhotonCerenkov = ThetaPhotCer;} - - void SetTrackMomentum(Float_t TrackMomentum) {fTrackMomentum = TrackMomentum;} - void SetTrackEta(Float_t TrackEta) {fTrackEta = TrackEta;} - void SetTrackTheta(Float_t TrackTheta) { fTrackTheta = TrackTheta;} - void SetTrackPhi(Float_t TrackPhi) { fTrackPhi = TrackPhi;} - void SetTrackPt(Float_t TrackPt) { fTrackPt = TrackPt;} - void SetTrackCharge(Int_t TrackCharge) { fTrackCharge = TrackCharge;} - void SetTrackTPCLastZ(Float_t TrackTPCLastZ) { fTrackTPCLastZ = TrackTPCLastZ;} - void SetMinDist(Float_t MinDist) { fMinDist = MinDist;} - void SetShiftX(Float_t ShiftX) { fShiftX = ShiftX;} - void SetShiftY(Float_t ShiftY) { fShiftY = ShiftY;} - - void SetDetectorWhereX(Float_t Xcoord) { fXcoord = Xcoord;} - void SetDetectorWhereY(Float_t Ycoord) { fYcoord = Ycoord;} - - void SetIntersectionX(Float_t IntersectionX) { fIntersectionX = IntersectionX;} - void SetIntersectionY(Float_t IntersectionY) { fIntersectionY = IntersectionY;} - - void SetThetaOfRing(Float_t ThetaOfRing) { fThetaOfRing = ThetaOfRing;} - void SetAreaOfRing(Float_t AreaOfRing) { fAreaOfRing = AreaOfRing;} - void SetPortionOfRing(Float_t PortionOfRing) { fPortionOfRing = PortionOfRing;} - void SetHoughArea(Float_t HoughArea) { fHoughArea = HoughArea;} - - - void SetPhotonsNumber(Int_t PhotonsNumber) { fPhotonsNumber = PhotonsNumber;} - void SetPhotonIndex(Int_t PhotonIndex) { fPhotonIndex = PhotonIndex;} - void SetPhotonEta(Float_t PhotonEta) { fPhotonEta[fPhotonIndex] = PhotonEta;} - void SetPhotonFlag(Int_t PhotonFlag) { fPhotonFlag[fPhotonIndex] = PhotonFlag;} - void SetPhotonWeight(Float_t PhotonWeight) { fPhotonWeight[fPhotonIndex] = PhotonWeight;} - - void SetHoughRMS(Float_t HoughRMS) { fHoughRMS = HoughRMS;} - void SetMipIndex(Int_t MipIndex) { fMipIndex = MipIndex;} - void SetTrackIndex(Int_t TrackIndex) { fTrackIndex = TrackIndex;} - - void SetCandidatePhotonX(Float_t *CandidatePhotonX) { fCandidatePhotonX = CandidatePhotonX;} - void SetCandidatePhotonY(Float_t *CandidatePhotonY) { fCandidatePhotonY = CandidatePhotonY;} - void SetCandidatePhotonsNumber(Int_t CandidatePhotonsNumber) { fCandidatePhotonsNumber = CandidatePhotonsNumber;} - void SetHoughPhotons(Int_t HoughPhotons) { fHoughPhotons = HoughPhotons;} - void SetHoughPhotonsNorm(Float_t HoughPhotonsNorm) { fHoughPhotonsNorm = HoughPhotonsNorm;} - - void SetFittedTrackTheta(Float_t FittedTrackTheta) { fFittedTrackTheta = FittedTrackTheta;} - void SetFittedTrackPhi(Float_t FittedTrackPhi) { fFittedTrackPhi = FittedTrackPhi;} - void SetFittedThetaCerenkov(Float_t FittedThetaCerenkov) { fFittedThetaCerenkov = FittedThetaCerenkov;} - void SetFittedHoughPhotons(Int_t FittedHoughPhotons) { fFittedHoughPhotons = FittedHoughPhotons;} - void SetEstimationOfTheta(Float_t EstimationOfTheta) { fEstimationOfTheta = EstimationOfTheta;} - void SetEstimationOfThetaRMS(Float_t EstimationOfThetaRMS) { fEstimationOfThetaRMS = EstimationOfThetaRMS;} - - void FindBetaFromTheta(Float_t ThetaCerenkov) {fTrackBeta = 1/(fFreonRefractiveIndex*cos(ThetaCerenkov));} - - Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1); - - Float_t FromEmissionToCathode(); - ////////////////////////////////////// - private: - - AliRICH* fRich; - - Float_t fEventVertZ; - Float_t fEventMultiplicity; - - Float_t fTrackTheta; - Float_t fTrackPhi; - Float_t fTrackMomentum; - Float_t fTrackEta; - Float_t fTrackPt; - Int_t fTrackCharge; - Float_t fTrackTPCLastZ; - Float_t fMinDist; - Float_t fTrackBeta; - - Float_t fXtoentr; - Float_t fYtoentr; - - Float_t fThetaPhotonInTRS; - Float_t fPhiPhotonInTRS; - - Float_t fThetaPhotonInDRS; - Float_t fPhiPhotonInDRS; - - Float_t fThetaAtQuartz; - Float_t fPhiPoint; - - Float_t fXEmiss; - Float_t fYEmiss; - - Float_t fXInner; - Float_t fYInner; - Float_t fXOuter; - Float_t fYOuter; - Float_t fInnerRadius; - Float_t fOuterRadius; - - Float_t fPhotonEnergy; - Float_t fFreonRefractiveIndex; - Float_t fQuartzRefractiveIndex; - Float_t fGasRefractiveIndex; - - Float_t fFreonScaleFactor; - - Float_t fLengthEmissionPoint; - - Float_t fPhotonLimitX; - Float_t fPhotonLimitY; - Float_t fDistanceFromCluster; - - Float_t fMassHypotesis; - - Float_t fCerenkovAnglePad; - - Float_t fThetaPhotonCerenkov; - - Float_t fShiftX; - Float_t fShiftY; - - Float_t fXcoord; - Float_t fYcoord; - - Float_t fIntersectionX; - Float_t fIntersectionY; - - Float_t fThetaOfRing; - Float_t fAreaOfRing; - Float_t fPortionOfRing; - Float_t fHoughArea; - - Int_t fPhotonsNumber; - Int_t fPhotonIndex; - Float_t fPhotonEta[3000]; - Int_t fPhotonFlag[3000]; - Float_t fPhotonWeight[3000]; - - Float_t fHoughRMS; - - Int_t fMipIndex; - Int_t fTrackIndex; - - Float_t* fCandidatePhotonX; - Float_t* fCandidatePhotonY; - Int_t fCandidatePhotonsNumber; - - Int_t fHoughPhotons; - Float_t fHoughPhotonsNorm; - - Float_t fFittedTrackTheta; - Float_t fFittedTrackPhi; - Float_t fFittedThetaCerenkov; - Int_t fFittedHoughPhotons; - - Float_t fEstimationOfTheta; - Float_t fEstimationOfThetaRMS; - - public: - - Int_t fNumEtaPhotons; // Number of photons - Int_t fEtaFlag[3000]; // flag for good photons - Float_t fEtaPhotons[3000]; // Cerenkov angle each photon - Float_t fWeightPhotons[3000]; // weight for each photon - Float_t fThetaCerenkov; // Theta angle for Hough - Float_t fWeightThetaCerenkov; // Theta Cerenkov angle weighted - Float_t fThetaPeakPos; // Peak position - - -ClassDef(AliRICHRecon,0) - +////////////////////////////////////////////////////////////////////////// +// // +// AliRICHRecon // +// // +// RICH class to perfom pattern recognition based on Hough transfrom // +// // +////////////////////////////////////////////////////////////////////////// + + +#include //base class + +class AliRICHHelix; +class AliRICHParam; +class TClonesArray; +class AliRICHRecon : public TTask +{ +public : + AliRICHRecon(); + virtual ~AliRICHRecon() {} + + Double_t ThetaCerenkov(AliRICHHelix *pHelix,TClonesArray *pCluLst,Int_t &iMipId); // it returns reconstructed Theta Cerenkov + void FindThetaPhotonCerenkov(); // + void FindAreaAndPortionOfRing(); // + void FindPhotonAnglesInDRS(); // + void FindPhiPoint(); // + void FindThetaAtQuartz(Float_t ThetaCer); // + Double_t HoughResponse ( ); //most probable track theta ckov out of all photon candidate thetas + Int_t FlagPhotons (Double_t theta); //n. of photon candidates which thetas are inside a window around most probable track theta ckov + void FindThetaCerenkov(); // + void FindIntersectionWithDetector(); // + Float_t Cerenkovangle(Float_t n, Float_t b);// + Int_t PhotonInBand(); // + Int_t CheckDetectorAcceptance() const; // + Int_t GetFittedHoughPhotons() const{ return fFittedHoughPhotons;} // + Int_t GetPhotonFlag() const{ return fPhotonFlag[fPhotonIndex];} // + Int_t GetPhotonsNumber() const{ return fPhotonsNumber;} // + Int_t GetPhotonIndex() const{ return fPhotonIndex;} // + Float_t GetPhotonEnergy() const{ return fEphot;} // + Float_t GetEmissionPoint() const{ return fLengthEmissionPoint;} // + Float_t GetMassHypotesis() const{ return fMassHypotesis;} // + Float_t GetBetaOfParticle() const{ return fTrackBeta;} // + Float_t GetEntranceX() const{ return fXtoentr;} // + Float_t GetEntranceY() const{ return fYtoentr;} // + Float_t GetThetaCerenkov() const{ return fThetaCerenkov;} // + Float_t GetThetaPhotonCerenkov() const{ return fThetaPhotonCerenkov;} // + Float_t GetTrackTheta() const{ return fTrackTheta;} // + Float_t GetTrackPhi() const{ return fTrackPhi;} // + Float_t GetXPointOnCathode() const{ return fPhotonLimitX;} // + Float_t GetYPointOnCathode() const{ return fPhotonLimitY;} // + Float_t GetThetaPhotonInDRS() const{ return fThetaPhotonInDRS;} // + Float_t GetPhiPhotonInDRS() const{ return fPhiPhotonInDRS;} // + Float_t GetThetaPhotonInTRS() const{ return fThetaPhotonInTRS;} // + Float_t GetPhiPhotonInTRS() const{ return fPhiPhotonInTRS;} // + Float_t GetThetaAtQuartz() const{ return fThetaAtQuartz;} // + Float_t GetPhiPoint() const{ return fPhiPoint[fPhotonIndex];} // + Float_t GetXCoordOfEmission() const{ return fXEmiss;} // + Float_t GetYCoordOfEmission() const{ return fYEmiss;} // + Float_t GetXInnerRing() const{ return fXInner;} // + Float_t GetYInnerRing() const{ return fYInner;} // + Float_t GetRadiusInnerRing() const{ return fInnerRadius;} // + Float_t GetXOuterRing() const{ return fXOuter;} // + Float_t GetYOuterRing() const{ return fYOuter;} // + Float_t GetRadiusOuterRing() const{ return fOuterRadius;} // + Float_t GetShiftX() const{ return fShiftX;} // + Float_t GetShiftY() const{ return fShiftY;} // + Float_t GetDetectorWhereX() const{ return fXcoord;} // + Float_t GetDetectorWhereY() const{ return fYcoord;} // + Float_t GetIntersectionX() const{ return fIntersectionX;} // + Float_t GetIntersectionY() const{ return fIntersectionY;} // + Float_t GetThetaOfRing() const{ return fThetaOfRing;} // + Float_t GetAreaOfRing() const{ return fAreaOfRing;} // + Float_t GetPortionOfRing() const{ return fPortionOfRing;} // + Float_t GetHoughArea() const{ return fHoughArea;} // + Float_t GetPhotonEta() const{ return fPhotonEta[fPhotonIndex];} // + Float_t GetPhotonWeight() const{ return fPhotonWeight[fPhotonIndex];} // + Float_t GetHoughRMS() const{ return fHoughRMS;} // + Double_t GetPhotBKG() const{ return fnPhotBKG;} // + Float_t GetFittedTrackTheta() const{ return fFittedTrackTheta;} // + Float_t GetFittedTrackPhi() const{ return fFittedTrackPhi;} // + Float_t GetFittedThetaCerenkov() const{ return fFittedThetaCerenkov;} // + Float_t GetRingSigma2() const{ return fRingSigma2;} // + void SetPhotonEnergy(Float_t e) { fEphot = e;} // + void SetEmissionPoint(Float_t LengthEmissionPoint) { fLengthEmissionPoint = LengthEmissionPoint;} // + void SetEntranceX(Float_t Xtoentr) { fXtoentr = Xtoentr;} // + void SetEntranceY(Float_t Ytoentr) { fYtoentr = Ytoentr;} // + void SetThetaPhotonInTRS(Float_t Theta) {fThetaPhotonInTRS = Theta;} // + void SetPhiPhotonInTRS(Float_t Phi) {fPhiPhotonInTRS = Phi;} // + void SetThetaPhotonInDRS(Float_t Theta) {fThetaPhotonInDRS = Theta;} // + void SetPhiPhotonInDRS(Float_t Phi) {fPhiPhotonInDRS = Phi;} // + void SetThetaAtQuartz(Float_t ThetaAtQuartz) {fThetaAtQuartz = ThetaAtQuartz;} // + void SetPhiPoint(Float_t PhiPoint){ fPhiPoint[fPhotonIndex] = PhiPoint;} // + void SetXCoordOfEmission(Float_t XEmiss) {fXEmiss = XEmiss;} // + void SetYCoordOfEmission(Float_t YEmiss) {fYEmiss = YEmiss;} // + void SetXPointOnCathode(Float_t PhotonLimitX) { fPhotonLimitX = PhotonLimitX;} // + void SetYPointOnCathode(Float_t PhotonLimitY) { fPhotonLimitY = PhotonLimitY;} // + void SetXInnerRing(Float_t XInner) {fXInner = XInner;} // + void SetYInnerRing(Float_t YInner) {fYInner = YInner;} // + void SetRadiusInnerRing(Float_t InnerRadius) {fInnerRadius = InnerRadius;} // + void SetXOuterRing(Float_t XOuter) {fXOuter = XOuter;} // + void SetYOuterRing(Float_t YOuter) {fYOuter = YOuter;} // + void SetRadiusOuterRing(Float_t OuterRadius) {fOuterRadius = OuterRadius;} // + void SetThetaCerenkov(Float_t ThetaCer) {fThetaCerenkov = ThetaCer;} // + void SetThetaPhotonCerenkov(Float_t ThetaPhotCer) {fThetaPhotonCerenkov = ThetaPhotCer;} // + void SetTrackTheta(Float_t TrackTheta) { fTrackTheta = TrackTheta;} // + void SetTrackPhi(Float_t TrackPhi) { fTrackPhi = TrackPhi;} // + void SetShiftX(Float_t ShiftX) { fShiftX = ShiftX;} // + void SetShiftY(Float_t ShiftY) { fShiftY = ShiftY;} // + void SetDetectorWhereX(Float_t Xcoord) { fXcoord = Xcoord;} // + void SetDetectorWhereY(Float_t Ycoord) { fYcoord = Ycoord;} // + void SetIntersectionX(Float_t IntersectionX) { fIntersectionX = IntersectionX;} // + void SetIntersectionY(Float_t IntersectionY) { fIntersectionY = IntersectionY;} // + void SetThetaOfRing(Float_t ThetaOfRing) { fThetaOfRing = ThetaOfRing;} // + void SetAreaOfRing(Float_t AreaOfRing) { fAreaOfRing = AreaOfRing;} // + void SetPortionOfRing(Float_t PortionOfRing) { fPortionOfRing = PortionOfRing;} // + void SetHoughArea(Float_t HoughArea) { fHoughArea = HoughArea;} // + void SetPhotonsNumber(Int_t PhotonsNumber) { fPhotonsNumber = PhotonsNumber;} // + void SetPhotonIndex(Int_t PhotonIndex) { fPhotonIndex = PhotonIndex;} // + void SetPhotonEta(Float_t PhotonEta) { fPhotonEta[fPhotonIndex] = PhotonEta;} // + void SetPhotonFlag(Int_t PhotonFlag) { fPhotonFlag[fPhotonIndex] = PhotonFlag;} // + void SetPhotonWeight(Float_t PhotonWeight) { fPhotonWeight[fPhotonIndex] = PhotonWeight;} // + void SetPhotBKG(Double_t nPhotBKG) {fnPhotBKG=nPhotBKG;} // + void SetHoughRMS(Float_t HoughRMS) { fHoughRMS = HoughRMS;} // + void SetFittedTrackTheta(Float_t FittedTrackTheta) { fFittedTrackTheta = FittedTrackTheta;} // + void SetFittedTrackPhi(Float_t FittedTrackPhi) { fFittedTrackPhi = FittedTrackPhi;} // + void SetFittedThetaCerenkov(Float_t FittedThetaCerenkov) { fFittedThetaCerenkov = FittedThetaCerenkov;}// + void SetFittedHoughPhotons(Int_t FittedHoughPhotons) { fFittedHoughPhotons = FittedHoughPhotons;} // + void SetRingSigma2(Float_t RingSigma2) { fRingSigma2 = RingSigma2;} // + Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1); // + Float_t FromEmissionToCathode(); // + +protected: + TClonesArray *fClusters; //tmp pointer to list of clusters + AliRICHParam *fParam; //tmp pointer to AliRICHParam instance containing all the parameters needed for proccessing + Int_t fPhotonsNumber; // Number of photons candidate + Int_t fPhotonIndex; // index of photons + Int_t fPhotonFlag[3000]; // flag for photons + Int_t fFittedHoughPhotons; // n. photons after Hough and after minimization + Int_t fMinNumPhots; // minimum number of photons for a given ring + + Float_t fTrackTheta; // Theta of track at RICH + Float_t fTrackPhi; // Phi of track at RICH + Float_t fMinDist; // min distance between extrapolated track and MIP + Float_t fTrackBeta; // beta of the track + Float_t fXtoentr; // X entrance to RICH + Float_t fYtoentr; // Y entrance to RICH + Float_t fThetaPhotonInTRS; // Theta of photon in the Track Reference System (TRS) + Float_t fPhiPhotonInTRS; // Phi of photon in TRS + Float_t fThetaPhotonInDRS; // Theta of photon in Detector Reference System (DRS) + Float_t fPhiPhotonInDRS; // Phi of photon in DRS + Float_t fThetaAtQuartz; // Theta at the quartz entrance + Float_t fPhiPoint[3000]; // array of phi of ring photons + Float_t fXEmiss; // x emission + Float_t fYEmiss; // y emission + Float_t fXInner; // X inner ring + Float_t fYInner; // Y inner ring + Float_t fXOuter; // X outer ring + Float_t fYOuter; // Y outer ring + Float_t fInnerRadius; // inner radius + Float_t fOuterRadius; // outer radius + Float_t fEphot; // photon energy + Float_t fLengthEmissionPoint; // lenght of emmission point + Float_t fPhotonLimitX; // X phys limit for photon + Float_t fPhotonLimitY; // Y phys limit for photon + Float_t fDistanceFromCluster; // distance from cluster + Float_t fCerenkovAnglePad; // cherenkov angle of pad + Float_t fThetaPhotonCerenkov; // theta cerenkov for photon + Float_t fShiftX; // x shift to entrance in radiator + Float_t fShiftY; // y shift to entrance in radiator + Float_t fXcoord; // .. + Float_t fYcoord; // .. + Float_t fIntersectionX; // .. + Float_t fIntersectionY; // .. + Float_t fMassHypotesis; // + Float_t fThetaOfRing; // theta of ring + Float_t fAreaOfRing; // area of the ring + Float_t fPortionOfRing; // fraction of the accepted ring + Float_t fHoughArea; // area Hough + Float_t fPhotonEta[3000]; // theta cerenkov of photon candidates + Float_t fPhotonWeight[3000]; // weigth + Float_t fHoughRMS; // rms Hough + Float_t* fCandidatePhotonX; // x photon candidates + Float_t* fCandidatePhotonY; // y photon candidates + Float_t fFittedTrackTheta; // theta track after minim. + Float_t fFittedTrackPhi; // phi track after minim. + Float_t fFittedThetaCerenkov; // thetacerenkov after minim. + Float_t fThetaMin,fThetaMax; // min max + Bool_t fIsWEIGHT; // flag to consider weight procedure + Bool_t fIsBACKGROUND; // flag to simulate bkg + Float_t fDTheta; // Step for sliding window + Float_t fWindowWidth; // Hough width of sliding window + + Int_t fNumEtaPhotons; // Number of photons + Int_t fEtaFlag[3000]; // flag for good photons + Float_t fEtaPhotons[3000]; // Cerenkov angle each photon + Float_t fWeightPhotons[3000]; // weight for each photon + Double_t fnPhotBKG; // # estimated BKG photons in the ring + Float_t fThetaCerenkov; // Theta angle for Hough + Float_t fWeightThetaCerenkov; // Theta Cerenkov angle weighted + Float_t fThetaPeakPos; // Peak position + Float_t fRingSigma2; // sigma2 of the reconstructed ring + ClassDef(AliRICHRecon,0) }; #endif // #ifdef AliRICHRecon_cxx