ROOT logo
#ifndef __EDHELPERS__
#define __EDHELPERS__

#include "TObject.h"
#include "hreconstructor.h"



using namespace std;

class HParticleCand;
class HMdcSeg;
class HTofHit;
class HWallHit;
class HShowerHit;
class HEmcCluster;
class HRichHit;
class HRpcCluster;
class HWallHit;
class HRichCal;
class HGeantKine;
class HGeantKine;

class TEveFrameBox;
class TEveTrack;
class TEveTrackPropagator;
class HGeomVector;
class HGeomTransform;
class TGeoSphere;

#define TO_CM 0.1



//----------------------------------------------------------------
class HEDTransform : public TObject {
    static HGeomTransform* richSecTrans;
    static HGeomTransform* richMirrorTrans;
    static TGeoSphere*     richMirror;
    static Bool_t          fisNewRich;
    static Bool_t          fisEmc;
public:
    static void            setIsNewRich(Bool_t newrich=kTRUE) { fisNewRich = newrich;}
    static Bool_t          isNewRich()             { return fisNewRich;}
    static void            setIsEmc(Bool_t is=kTRUE) { fisEmc = is;}
    static Bool_t          isEmc()                   { return fisEmc;}
    static Float_t         calcPhiToLab            (Int_t sec);
    static void            setRichSecTrans         (Double_t x,Double_t y,Double_t z,Double_t rot1,Double_t rot2,Double_t rot3);
    static void            setRichMirrorTrans      (Double_t x,Double_t y,Double_t z,Double_t rot1,Double_t rot2,Double_t rot3);
    static HGeomTransform* getRichSecTrans         ();
    static HGeomTransform* getRichMirrorTrans      ();
    static void            setRichMirror(TGeoSphere* mirr) {richMirror = mirr;}
    static TGeoSphere*     getRichMirror           () { return richMirror;}
    static Bool_t          calcSegPointsLab        (HMdcSeg* seg ,HGeomVector& p1,HGeomVector& p2);
    static Bool_t          calcWirePointsLab       (Int_t s,Int_t m,Int_t l,Int_t c,HGeomVector& p1,HGeomVector& p2);
    static Bool_t          calcSegKickPlanePointLab(HMdcSeg* seg,HGeomVector& p);
    static Bool_t          calcWallHitPointLab     (HWallHit* hit ,HGeomVector& p);
    static Bool_t          calcTofHitPointLab      (HTofHit* hit ,HGeomVector& p);
    static Bool_t          calcShowerHitPointLab   (HShowerHit* hit ,HGeomVector& p);
    static Bool_t          calcEmcClusterPointLab  (HEmcCluster* hit ,HGeomVector& p);
    static Bool_t          calcRpcClustPointLab    (HRpcCluster* hit ,HGeomVector& p);
    static Bool_t          calcVertexPoint         (HGeomVector& p);
    static Bool_t          calcRichLinePointLab    (HRichHit* hit,HGeomVector& p1,HGeomVector& p2,HParticleCand* cand=0);
    static Bool_t          calcRichPadPlaneToLab   (Int_t sec,HGeomVector& p, HGeomTransform& trans);
    static TEveFrameBox*   calcRichSectorFrame     (Int_t sec,HGeomTransform& trans);
    static TEveFrameBox*   calcWallFrame           ();
    static Bool_t          calcWallCell            (HWallHit* hit,Float_t* coord /* [12], xyz 4 corners*/);
    static Bool_t          calcRichPadSector       (HRichCal* cal, HGeomTransform& trans, Float_t* coord /* [12], xyz 4 corners*/);
    static Bool_t          calcRichMirrorHit       (const HGeomVector& p1, const HGeomVector& p2, HGeomVector& pout );
    static TEveTrack*      createParticle          (Int_t pid,Double_t vx,Double_t vy,Double_t vz,Double_t px,Double_t py,Double_t pz,TEveTrackPropagator* prop);
    static TEveTrack*      createKineParticle      (HGeantKine*,TEveTrackPropagator*);

    static Bool_t          calcRichGeantPadplanePointLab(Int_t s,HGeomVector& p);
    static Bool_t          calcMdcGeantLayerPointLab    (Int_t s,Int_t m,Int_t l,HGeomVector& p);
    static Bool_t          calcWallGeantPointLab        (Int_t c,HGeomVector& p);
    static Bool_t          calcTofGeantPointLab         (Int_t s,Int_t m,Int_t c,HGeomVector& p);
    static Bool_t          calcRpcGeantPointLab         (Int_t s,HGeomVector& p);
    static Bool_t          calcShowerGeantPointLab      (Int_t s,Int_t m,HGeomVector& p);
    ClassDef(HEDTransform,0)
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDMdcWireManager : public TObject {

    Int_t wires[6][4][6][220]; //! wire address -> ntimes
    void  clear();
    Int_t fillAllWires();
    Int_t fillSegmentWires();


public:
    HEDMdcWireManager();
    ~HEDMdcWireManager(void);
    Int_t fill();
    Int_t isUsedNtimes(Int_t s,Int_t m,Int_t l,Int_t c);
    void  getAddress(Int_t& s,Int_t& m,Int_t& l,Int_t& c, Int_t& addr) {
	s = ((addr >> 0) & 0x7 );   // 3 bits starting at bit 1
        m = ((addr >> 3) & 0x3 );   // 2 bits starting at bit 4
        l = ((addr >> 5) & 0x7 );   // 3 bits starting at bit 6
        c = ((addr >> 8) & 0xFF);   // 8 bits starting at bit 9
    }
    Int_t setAddress(Int_t s,Int_t m,Int_t l,Int_t c) {
        Int_t addr = 0;
        addr = ( ((s & 0x7 ) << 0 ) | addr); // 3 bits starting at bit 1
	addr = ( ((m & 0x3 ) << 3 ) | addr); // 2 bits starting at bit 4
        addr = ( ((l & 0x7 ) << 5 ) | addr); // 3 bits starting at bit 6
        addr = ( ((c & 0xFF) << 8 ) | addr); // 8 bits starting at bit 9
        return addr;
    }

    ClassDef(HEDMdcWireManager,0) // helper class to do wire statistics
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDMakeContainers : public HReconstructor {
public:
    HEDMakeContainers(const Text_t* name="EDMakeContainers",const Text_t* title="Container for ED"){;}
    ~HEDMakeContainers(void){;}
    Bool_t init(void);
    Bool_t reinit(void);
    Int_t  execute(void){ return 0;}
    Bool_t finalize(void) {return kTRUE;}
    ClassDef(HEDMakeContainers,0) // dummy tasks to create all needed containers
};
//----------------------------------------------------------------




#endif  // helpers definition







 hedhelpers.h:1
 hedhelpers.h:2
 hedhelpers.h:3
 hedhelpers.h:4
 hedhelpers.h:5
 hedhelpers.h:6
 hedhelpers.h:7
 hedhelpers.h:8
 hedhelpers.h:9
 hedhelpers.h:10
 hedhelpers.h:11
 hedhelpers.h:12
 hedhelpers.h:13
 hedhelpers.h:14
 hedhelpers.h:15
 hedhelpers.h:16
 hedhelpers.h:17
 hedhelpers.h:18
 hedhelpers.h:19
 hedhelpers.h:20
 hedhelpers.h:21
 hedhelpers.h:22
 hedhelpers.h:23
 hedhelpers.h:24
 hedhelpers.h:25
 hedhelpers.h:26
 hedhelpers.h:27
 hedhelpers.h:28
 hedhelpers.h:29
 hedhelpers.h:30
 hedhelpers.h:31
 hedhelpers.h:32
 hedhelpers.h:33
 hedhelpers.h:34
 hedhelpers.h:35
 hedhelpers.h:36
 hedhelpers.h:37
 hedhelpers.h:38
 hedhelpers.h:39
 hedhelpers.h:40
 hedhelpers.h:41
 hedhelpers.h:42
 hedhelpers.h:43
 hedhelpers.h:44
 hedhelpers.h:45
 hedhelpers.h:46
 hedhelpers.h:47
 hedhelpers.h:48
 hedhelpers.h:49
 hedhelpers.h:50
 hedhelpers.h:51
 hedhelpers.h:52
 hedhelpers.h:53
 hedhelpers.h:54
 hedhelpers.h:55
 hedhelpers.h:56
 hedhelpers.h:57
 hedhelpers.h:58
 hedhelpers.h:59
 hedhelpers.h:60
 hedhelpers.h:61
 hedhelpers.h:62
 hedhelpers.h:63
 hedhelpers.h:64
 hedhelpers.h:65
 hedhelpers.h:66
 hedhelpers.h:67
 hedhelpers.h:68
 hedhelpers.h:69
 hedhelpers.h:70
 hedhelpers.h:71
 hedhelpers.h:72
 hedhelpers.h:73
 hedhelpers.h:74
 hedhelpers.h:75
 hedhelpers.h:76
 hedhelpers.h:77
 hedhelpers.h:78
 hedhelpers.h:79
 hedhelpers.h:80
 hedhelpers.h:81
 hedhelpers.h:82
 hedhelpers.h:83
 hedhelpers.h:84
 hedhelpers.h:85
 hedhelpers.h:86
 hedhelpers.h:87
 hedhelpers.h:88
 hedhelpers.h:89
 hedhelpers.h:90
 hedhelpers.h:91
 hedhelpers.h:92
 hedhelpers.h:93
 hedhelpers.h:94
 hedhelpers.h:95
 hedhelpers.h:96
 hedhelpers.h:97
 hedhelpers.h:98
 hedhelpers.h:99
 hedhelpers.h:100
 hedhelpers.h:101
 hedhelpers.h:102
 hedhelpers.h:103
 hedhelpers.h:104
 hedhelpers.h:105
 hedhelpers.h:106
 hedhelpers.h:107
 hedhelpers.h:108
 hedhelpers.h:109
 hedhelpers.h:110
 hedhelpers.h:111
 hedhelpers.h:112
 hedhelpers.h:113
 hedhelpers.h:114
 hedhelpers.h:115
 hedhelpers.h:116
 hedhelpers.h:117
 hedhelpers.h:118
 hedhelpers.h:119
 hedhelpers.h:120
 hedhelpers.h:121
 hedhelpers.h:122
 hedhelpers.h:123
 hedhelpers.h:124
 hedhelpers.h:125
 hedhelpers.h:126
 hedhelpers.h:127
 hedhelpers.h:128
 hedhelpers.h:129
 hedhelpers.h:130
 hedhelpers.h:131
 hedhelpers.h:132
 hedhelpers.h:133
 hedhelpers.h:134
 hedhelpers.h:135
 hedhelpers.h:136
 hedhelpers.h:137
 hedhelpers.h:138
 hedhelpers.h:139