LCDCalRecon


class description - source file - inheritance tree

class LCDCalRecon : public LCDRecModule

    private:
void Init() static Double_t RanExpDecay(TRandom* pRand, Double_t mean = 1.0) Int_t Smearable(LCDMcPart*) Int_t Swim(LCDSmearTraj* pTraj, Bool_t hadron) public:
LCDCalRecon LCDCalRecon() LCDCalRecon LCDCalRecon(LCDGetParameters* getparam) LCDCalRecon LCDCalRecon(LCDCalRecon&) virtual void ~LCDCalRecon() void AddCluster(LCDCluster* kal1, LCDCluster* kal2) static TClass* Class() virtual void cleanup() virtual void doit(LCDEvent* event) void doMerge() virtual TClass* IsA() const TVector3 Rotate(const TVector3& inVec, const TVector3& angleVec) TVector3 RotatePhi(const Double_t phi, const TVector3& iVec) TVector3 RotateTheta(const Double_t theta, const TVector3& iVec) void SetDetectorParameters(LCDGetParameters* getparam) void SetMergeAngleEM(Double_t a) void SetMergeAngleHAD(Double_t a) void SetMergeSizeEM(Double_t a) void SetMergeSizeHAD(Double_t a) void SetNoClusterMerge() virtual void ShowMembers(TMemberInspector& insp, char* parent) void Smear(Double_t Epart, LCDSmearTraj& traj, Bool_t hadron, LCDGetParameters* gp, LCDCluster* kal) virtual void spew(FILE* ofile) const virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) TVector3 ToPolar(const TVector3& pRect)

Data Members

private:
TObjArray* ClsList "Clusters" LCDGetParameters* gp TRandom m_rand Use Root for randoms, gaussian or uniform LCDDetectorVolume* pVolumes Array of detector volumes LCDDetectorVolume* pInnerVolume Innermost volume about IP Int_t nVolumes Number of detector volumes in array Double_t merge_siz_EM Cut Value for merging. by cm (0.8 cm). Double_t merge_siz_HAD Default value = 1.3 cm. Double_t merge_angle_EM Cut Value for merging. by radian (0.0200 rad) Double_t merge_angle_HAD Default value = 0.0600 rad Int_t m_cluster_merge =1 With cluster merging (default)

Class Description

 LCDCalRecon

 LCDCalRecon is the over-all manager for Fast MC calorimetry.  It must
 be instantiated for each detector (or change to smearing parameters)
 but need only be cleared between events belonging to the same
 detector

LCDCalRecon()
 Constructor.   Primary job is to assemble various parameters
 describing detector geometry and resolution.

LCDCalRecon(LCDGetParameters* getparam)
 Constructor.   Primary job is to assemble various parameters
 describing detector geometry and resolution.

void cleanup()
 Get rid of allocated memory, obsolete pointers.

void Init()

void SetDetectorParameters(LCDGetParameters* Getparam)

void doit(LCDEvent* event)
 Process an event.  For each MC particle, check to see whether it's
 "smearable".  If so, propagate, then smear energy and transverse
 position.

void spew(FILE* ofile) const
 Output standard cluster quantities to ascii file.

Int_t Smearable(LCDMcPart* pPart)
 Check a) that we have a final-state particle b) particle type.
 Must be electron/positron, photon, or an acceptable hadron.
 c) energy.  Must be non-negligible.

Int_t Swim(LCDSmearTraj* pTraj, Bool_t hadron)
 Swim particle with initial conditions described in pTraj through
 the detector.  Return true if particle showers in the detector
 (where the coil counts as part of the detector)

void doMerge()
 do Cluster merge taking into account detector granuarity...

void AddCluster(LCDCluster* kal1, LCDCluster* kal2)
cout<<endl<<" ------<Addcluster> add calhit..."<<kal1<<" "<<kal2;

void Smear(Double_t Epart, LCDSmearTraj& traj, Bool_t hadron, LCDGetParameters* gp, LCDCluster* kal)
 Inputs are
    -- "perfect" particle position, after propagation
    -- hadron/lepton boolean
    -- smearing parameters
    -- random number generator instance

TVector3 ToPolar(const TVector3& pRect)
 Given rectangular coords, compute polar and store in provided 3-vector.
 (theta, phi, r).  The following conventions are used:
 0 <= phi < 2 pi
 0 < phi < pi/2 for x, y > 0.  pi/2 < phi < pi for x < 0, y > 0, etc.
 0 <= theta < pi; theta < pi/2 for z > 0

TVector3 Rotate(const TVector3& inVec, const TVector3& angleVec) // Rotate something so that z axis is "returned" // to normalVec. That is, if angleVec has polar coords (theta, phi, r), // rotate about y-axis by theta, then about z-axis by phi.
 We need to rotate by theta, phi coordinates of momentum

TVector3 RotateTheta(const Double_t theta, const TVector3& iVec) // Rotate about y-axis with angle theta

TVector3 RotatePhi(const Double_t phi, const TVector3& iVec) // Rotate about z-axis with angle phi



Inline Functions


           Double_t RanExpDecay(TRandom* pRand, Double_t mean = 1.0)
               void SetMergeSizeEM(Double_t a)
               void SetMergeSizeHAD(Double_t a)
               void SetMergeAngleEM(Double_t a)
               void SetMergeAngleHAD(Double_t a)
               void SetNoClusterMerge()
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
               void StreamerNVirtual(TBuffer& b)
        LCDCalRecon LCDCalRecon(LCDCalRecon&)
               void ~LCDCalRecon()


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.