|
BrRichPidModuleclass description - source file - inheritance tree class BrRichPidModule : public BrModuleprotected: Data Membersprivate: Class DescriptionRICH pid module - makes particle identification from RICH data. Find the Bfs track table and the RichRdo object in the inNode. Calculate the track lines reflection on the RICH mirror and find the intersection with the image plane - this should be the center of a ring generated by the particle. Find a ring by looking at the number of hits in delta radius areas around the center. BrRichPidModule() Default constructor. DO NOT USE BrRichPidModule(const Char_t* name, const Char_t* title) : BrModule(name, title) Named Constructor void DefineHistograms() Define histograms. void Init() In this method the following is initialized: 1) Geometry and Parameter db managers 2) Rich parameters (tube numbering and positions) 3) The Geometry of the RICH and T5 4) Rich mirror information (focal length, mirror sphere radius...) 5) Image plane void Begin() Run-level initialisation void Event(BrEventNode* inNode, BrEventNode* outNode) Following is done in the event method: BrLine3D ReflectTrackLineOnMirror(const BrLine3D& trackLine) Reflects the track line on the focal mirror. 1) find the reflection axis (the axis defined by the center of the mirror sphere and the track-mirror intersection point). 2) find angle between track line and reflection axis 3) find the rotation axis (perpendicular to trackLine and reflection axis) 4) rotate trackline with 2*angle around reflection axis BrVector3D IntersectionWithMirror(const BrLine3D& trackLine) Calculates the intersection between the trackLine and the focal mirror of the RICH (Djamels calculations). find intersection point with sphere: line equations: sphere: x = ax*t + xo (x - xs)^2 + (y - ys)^2 + (z - zs)^2 = r^2 y = ay*t + yo z = az*t + zo Equation to solve: (axt + xo - xs)^2 + (ayt + yo - ys)^2 + (azt + zo - zs)^2 - r^2 = 0 t^2(ax^2 + ay^2 + az^2) + 2t(ax*(xo - xs) + ay*(yo - ys) + az*(zo - zs)) + ((xo - xs)^2 + (yo - ys)^2 + (zo - zs)^2 - r^2) = 0 c1 t^2 + c2 t + c3 = 0; BrVector3D InImagePlaneCoordinates(const BrVector3D& hit) Hit must be on image plane. Return hit coordinates (x,y,0) on Rich image plane. Float_t GuessRadius(RICHHIT* richHits, Int_t trackNumber) Tries to find the radius of the ring. Seach for hits with distance to the ring center in a dR window and fills the number of hits into a histogram. Fits this histogram with a gaus to find the approximate maximum (radius) , if the maximum of the histogram is too far from the mean of the fit, simply use the max as radius. Float_t FindRing(RICHHIT* richHits, TRACKHIT track) Rind a ring with center at (cX, cY) from hits. 1) Requires nHits >= fMinHitsInRing 2) Guesses a radius 3) Checks that there is a reasonable number of hits in the ring 4) If not, remove hits in ring from the hits array and try again 5) Does this 5 times. If no rings found returns 0. 6) If ring is found, refit the radius. Float_t EstimateNumberOfPhotons(Float_t radius) The number of detected cherenkov photons is given by N = No * L sin^2(theta) where No is a detector quality parameter, L is the path length and theta is the cherenkov angle Float_t CalculateMass(Float_t p, Float_t radius) Calculates the theoretical mass from the momentum and the ring radius. ____________ we have : 1/beta = V 1 + (m/p)^2 and cos(theta) = 1/(n*beta) _____________________ => m = p V (n*cos(theta))^2 - 1 void Snapshot(RICHHIT* richHits, TRACKHIT track) void End() Run-level finalisation void Finish() Job-level finalisation void Print(Option_t* option) const Print module information See BrModule::Print for options. In addition this module defines the Option: <fill in here> Inline Functionsvoid SetDRWindow(Float_t dr = 2.0) void SetMaxNSnapshots(Int_t n = 0) void SetMinHitsInRing(Int_t n = 4) void SetMaxRadius(Float_t r = 11) void SetRefractiveIndex(Float_t n = 1.00202) void SetUseD3Momentum(Bool_t d3 = kFALSE) void SetUseD4Momentum(Bool_t d4 = kFALSE) void SetCheckGeometry(Bool_t b = kFALSE) void SetImagePlaneOffset(Float_t x = 0.185, Float_t y = -0.083) TClass* Class() TClass* IsA() const void ShowMembers(TMemberInspector& insp, char* parent) void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) BrRichPidModule BrRichPidModule(BrRichPidModule&) void ~BrRichPidModule() |
||||||
This page automatically generated by script docBrat by Christian Holm |
Copyright ; 2002 BRAHMS Collaboration
<brahmlib@rcf.rhic.bnl.gov>
|