ROOT logo
#ifndef __EDHITOBJECTS__
#define __EDHITOBJECTS__

#include "TEveElement.h"
#include "TEvePointSet.h"
#include "TEveLine.h"
#include "TEveCompound.h"
#include "TEveQuadSet.h"
#include "TEveFrameBox.h"


class HMdcSegSim;
class HMdcCal1Sim;
class HTofHitSim;
class HWallHitSim;
class HTofClusterSim;
class HShowerHit;
class HShowerHitSim;
class HEmcCluster;
class HEmcClusterSim;
class HRichHitSim;
class HRpcClusterSim;
class HMetaMatch2;
class candidate;
class HParticleCandSim;
class HGeantKine;
class HGeantRichMirror;
class HGeantRichDirect;


class HGeomVector;


//----------------------------------------------------------------
class HEDVertex : public TEvePointSet {
private:

public:
    HEDVertex();
    virtual ~HEDVertex();
    void Print();

    ClassDef(HEDVertex,0)    // event vertex
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDSegment : public TEveLine {
private:

public:
    HEDSegment(HMdcSegSim* seg = 0);
    virtual ~HEDSegment();
    void Print();

    ClassDef(HEDSegment,0)   // MDC segment
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDMdcWire : public TEveLine {
private:
    Int_t nTimes;                  // how many times this wire has been used
    Bool_t makeWire(Int_t s,Int_t m,Int_t l,Int_t c,HMdcCal1Sim* cal = 0);
public:
    HEDMdcWire(HMdcCal1Sim* cal = 0);
    HEDMdcWire(Int_t s,Int_t m,Int_t l,Int_t c);
    virtual ~HEDMdcWire();
    void  setNtimes(Int_t times = 0) { nTimes = times;}
    Int_t getNtimes()                { return  nTimes ; }
    void  countUp()                  { nTimes++; }
    void  countDown()                { nTimes--; if(nTimes < 0) nTimes = 0;}
    void  Print();

    ClassDef(HEDMdcWire,0)   // MDC wire
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRichHit : public TEveLine {
private:

public:
    HEDRichHit(HRichHitSim* hit = 0,HParticleCandSim* cand = 0);
    virtual ~HEDRichHit();
    void Print();

    ClassDef(HEDRichHit,0)    // RICH hit
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDWallHit : public TEvePointSet {
private:

public:
    HEDWallHit(HWallHitSim* hit = 0);
    virtual ~HEDWallHit();
    void Print();

    ClassDef(HEDWallHit,0)     // WALL hit
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDWallPlane : public TEveQuadSet {
private:
    TEveFrameBox* box;
public:
    HEDWallPlane();
    virtual ~HEDWallPlane();
    void Print();

    ClassDef(HEDWallPlane,0)   // Wall plane + fired cells
};
//----------------------------------------------------------------


//----------------------------------------------------------------
class HEDTofHit : public TEvePointSet {
private:

public:
    HEDTofHit(HTofHitSim* hit = 0);
    virtual ~HEDTofHit();
    void Print();

    ClassDef(HEDTofHit,0)     // TOF hit
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDTofCluster : public TEvePointSet {
private:

public:
    HEDTofCluster(HTofClusterSim* hit = 0);
    virtual ~HEDTofCluster();
    void Print();

    ClassDef(HEDTofCluster,0)   // TOF cluster
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRpcCluster : public TEvePointSet {
private:

public:
    HEDRpcCluster(HRpcClusterSim* hit = 0);
    virtual ~HEDRpcCluster();
    void Print();

    ClassDef(HEDRpcCluster,0)  // RPC cluster
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDShowerHit : public TEvePointSet {
private:

public:
    HEDShowerHit(HShowerHitSim* hit = 0);
    virtual ~HEDShowerHit();
    void Print();

    ClassDef(HEDShowerHit,0)   // SHOWER hit
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDEmcCluster : public TEvePointSet {
private:

public:
    HEDEmcCluster(HEmcClusterSim* hit = 0);
    virtual ~HEDEmcCluster();
    void Print();

    ClassDef(HEDEmcCluster,0)   // EMC Cluster
};
//----------------------------------------------------------------


//----------------------------------------------------------------
class HEDParticleCand : public TEveCompound {

private:
public:
    HEDParticleCand(HParticleCandSim* cand = 0);
    virtual ~HEDParticleCand();
    void Print();
    void SetLineColor  (Color_t val) { ((TEveLine*)FindChild("EDParticleCand"))->SetLineColor(val);}
    void SetLineStyle  (Style_t val) { ((TEveLine*)FindChild("EDParticleCand"))->SetLineStyle(val);}
    void SetLineWidth  (Style_t val) { ((TEveLine*)FindChild("EDParticleCand"))->SetLineWidth(val);}
    void SetMarkerColor(Color_t val) { ((TEveLine*)FindChild("EDParticleCand"))  ->SetLineColor(val); }
    void SetMarkerStyle(Style_t val) { ((TEveLine*)FindChild("EDParticleCand"))->SetMarkerStyle(val);}
    void SetMarkerSize (Size_t val)  { ((TEveLine*)FindChild("EDParticleCand"))->SetMarkerSize(val) ;}
    void SetRnrLine    (Bool_t val)  { ((TEveLine*)FindChild("EDParticleCand"))  ->SetRnrLine(val);}
    void SetRnrPoints  (Bool_t val)  { ((TEveLine*)FindChild("EDParticleCand"))->SetRnrPoints(val);}
    ClassDef(HEDParticleCand,0)  // RICH hit + inner/outer segment + kickplane hit + META hit
};
//----------------------------------------------------------------


//----------------------------------------------------------------
class HEDRichPadPlane : public TEveQuadSet {
private:
    TEveFrameBox* box;
public:
    HEDRichPadPlane(Int_t sec,Int_t cleaned=0);
    virtual ~HEDRichPadPlane();
    void Print();

    ClassDef(HEDRichPadPlane,0)   // RICH pad plane + fired cells per sector
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRich700PadPlane : public TEveQuadSet {
private:
public:
    HEDRich700PadPlane();
    virtual ~HEDRich700PadPlane();
    void Print();

    ClassDef(HEDRich700PadPlane,0)   // RICH700 pad plane fired cells
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRichRing : public TEveLine {
private:

public:
    HEDRichRing(HRichHitSim* hit = 0);
    virtual ~HEDRichRing();
    void Print();

    ClassDef(HEDRichRing,0)       // RICH ring at pad plane
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRichHitPadPlane : public TEvePointSet {
private:

public:
    HEDRichHitPadPlane(HRichHitSim* hit = 0);
    virtual ~HEDRichHitPadPlane();
    void Print();

    ClassDef(HEDRichHitPadPlane,0) // RICH hit at pad plane
};
//----------------------------------------------------------------

class HEDRichGeantPadPlane : public TEvePointSet {
private:

public:
    HEDRichGeantPadPlane(HGeantKine* kine = 0,Int_t select=0,HGeantRichDirect* geaDir=0); // select = 0 -> photon, 1 = direct
    virtual ~HEDRichGeantPadPlane();
    void Print();

    ClassDef(HEDRichGeantPadPlane,0) // RICH hit at pad plane (GEANT)
};
//----------------------------------------------------------------

class HEDRichGeantMirror : public TEvePointSet {
private:

public:
    HEDRichGeantMirror(HGeantRichMirror*);
    virtual ~HEDRichGeantMirror();
    void Print();

    ClassDef(HEDRichGeantMirror,0) // RICH hit at Mirror (GEANT)
};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDRichCompound : public TEveCompound {

private:

public:
    HEDRichCompound(HRichHitSim* hit = 0);
    virtual ~HEDRichCompound();
    void Print();
    void SetLineColor  (Color_t val) { ((TEveLine*)    FindChild("EDRichRing")) ->SetLineColor(val);}
    void SetLineStyle  (Style_t val) { ((TEveLine*)    FindChild("EDRichRing")) ->SetLineStyle(val);}
    void SetLineWidth  (Style_t val) { ((TEveLine*)    FindChild("EDRichRing")) ->SetLineWidth(val);}
    void SetColor(Color_t val) { // change Mirror + hit at the same time
	((TEvePointSet*)FindChild("EDRichHitPadPlane"))->SetMarkerColor(val);
        ((TEveLine*)    FindChild("EDRichHitMirror"))  ->SetLineColor(val);
    }
    void SetColorMirrorHit(Color_t val) { // change Mirror hit
	((TEveLine*)    FindChild("EDRichHitMirror"))  ->SetLineColor(val);
    }
    void SetColorPadPlaneHit(Color_t val) { // change Mirror hit
	((TEvePointSet*)FindChild("EDRichHitPadPlane"))->SetMarkerColor(val);
    }
    void SetMarkerStyle(Style_t val) { ((TEvePointSet*)FindChild("EDRichHitPadPlane"))->SetMarkerStyle(val);}
    void SetMarkerSize (Size_t val)  { ((TEvePointSet*)FindChild("EDRichHitPadPlane"))->SetMarkerSize(val) ;}
    void SetRnrLine    (Bool_t val)  { ((TEveLine*)    FindChild("EDRichHitMirror"))  ->SetRnrLine(val);}
    void SetRnrPoints  (Bool_t val)  { ((TEvePointSet*)FindChild("EDRichHitPadPlane"))->SetRnrSelf(val);}

    ClassDef(HEDRichCompound,0)  // RICH hit at pad plane + ring + mirror hit


};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDGroup : public TEveElementList {

private:

    Int_t size;
    TEveElementList** list;

public:
    HEDGroup(const Char_t* name = "",const Char_t* title = "",Int_t n = 6, const Char_t* subname = "Sector");
    virtual ~HEDGroup();
    TEveElementList* getList(Int_t n)                     const { if(n >= 0 && n < size) {return  list[n];} else { return 0;}}
    void             AddElement(Int_t n, TEveElement* el)       { if(n >= 0 && n < size) (list[n])->AddElement(el);}
    void             DestroyElements()                          { for(Int_t n = 0; n < size; n ++) list[n]->DestroyElements(); }
    ClassDef(HEDGroup,0)  // Group objects in n lists like fashion


};
//----------------------------------------------------------------

//----------------------------------------------------------------
class HEDGroup2D : public TEveElementList {

private:
    Int_t size1,size2;;

    TEveElementList** list1;
    TEveElementList*** list2;

public:
    HEDGroup2D(const Char_t* name = "",const Char_t* title = "",Int_t n1 = 6,Int_t n2 = 4, const Char_t* subname1 = "Sector", const Char_t* subname2 = "Module");
    virtual ~HEDGroup2D();
    TEveElementList* getList(Int_t i,Int_t j)                   const { if(i >= 0 && i < size1 && j >= 0 && j < size2) {return  list2[i][j];} else { return 0;}}
    void             AddElement(Int_t i,Int_t j,TEveElement* el)      { if(i >= 0 && i < size1 && j >= 0 && j < size2) (list2[i][j])->AddElement(el);}
    void             DestroyElements()                                { for(Int_t i = 0; i < size1; i ++) for(Int_t j = 0; j < size2; j ++) list2[i][j]->DestroyElements(); }
    ClassDef(HEDGroup2D,0)  // Group objects in 2 dim array lists


};
//----------------------------------------------------------------





#endif  // hit object definition







 hedhitobjects.h:1
 hedhitobjects.h:2
 hedhitobjects.h:3
 hedhitobjects.h:4
 hedhitobjects.h:5
 hedhitobjects.h:6
 hedhitobjects.h:7
 hedhitobjects.h:8
 hedhitobjects.h:9
 hedhitobjects.h:10
 hedhitobjects.h:11
 hedhitobjects.h:12
 hedhitobjects.h:13
 hedhitobjects.h:14
 hedhitobjects.h:15
 hedhitobjects.h:16
 hedhitobjects.h:17
 hedhitobjects.h:18
 hedhitobjects.h:19
 hedhitobjects.h:20
 hedhitobjects.h:21
 hedhitobjects.h:22
 hedhitobjects.h:23
 hedhitobjects.h:24
 hedhitobjects.h:25
 hedhitobjects.h:26
 hedhitobjects.h:27
 hedhitobjects.h:28
 hedhitobjects.h:29
 hedhitobjects.h:30
 hedhitobjects.h:31
 hedhitobjects.h:32
 hedhitobjects.h:33
 hedhitobjects.h:34
 hedhitobjects.h:35
 hedhitobjects.h:36
 hedhitobjects.h:37
 hedhitobjects.h:38
 hedhitobjects.h:39
 hedhitobjects.h:40
 hedhitobjects.h:41
 hedhitobjects.h:42
 hedhitobjects.h:43
 hedhitobjects.h:44
 hedhitobjects.h:45
 hedhitobjects.h:46
 hedhitobjects.h:47
 hedhitobjects.h:48
 hedhitobjects.h:49
 hedhitobjects.h:50
 hedhitobjects.h:51
 hedhitobjects.h:52
 hedhitobjects.h:53
 hedhitobjects.h:54
 hedhitobjects.h:55
 hedhitobjects.h:56
 hedhitobjects.h:57
 hedhitobjects.h:58
 hedhitobjects.h:59
 hedhitobjects.h:60
 hedhitobjects.h:61
 hedhitobjects.h:62
 hedhitobjects.h:63
 hedhitobjects.h:64
 hedhitobjects.h:65
 hedhitobjects.h:66
 hedhitobjects.h:67
 hedhitobjects.h:68
 hedhitobjects.h:69
 hedhitobjects.h:70
 hedhitobjects.h:71
 hedhitobjects.h:72
 hedhitobjects.h:73
 hedhitobjects.h:74
 hedhitobjects.h:75
 hedhitobjects.h:76
 hedhitobjects.h:77
 hedhitobjects.h:78
 hedhitobjects.h:79
 hedhitobjects.h:80
 hedhitobjects.h:81
 hedhitobjects.h:82
 hedhitobjects.h:83
 hedhitobjects.h:84
 hedhitobjects.h:85
 hedhitobjects.h:86
 hedhitobjects.h:87
 hedhitobjects.h:88
 hedhitobjects.h:89
 hedhitobjects.h:90
 hedhitobjects.h:91
 hedhitobjects.h:92
 hedhitobjects.h:93
 hedhitobjects.h:94
 hedhitobjects.h:95
 hedhitobjects.h:96
 hedhitobjects.h:97
 hedhitobjects.h:98
 hedhitobjects.h:99
 hedhitobjects.h:100
 hedhitobjects.h:101
 hedhitobjects.h:102
 hedhitobjects.h:103
 hedhitobjects.h:104
 hedhitobjects.h:105
 hedhitobjects.h:106
 hedhitobjects.h:107
 hedhitobjects.h:108
 hedhitobjects.h:109
 hedhitobjects.h:110
 hedhitobjects.h:111
 hedhitobjects.h:112
 hedhitobjects.h:113
 hedhitobjects.h:114
 hedhitobjects.h:115
 hedhitobjects.h:116
 hedhitobjects.h:117
 hedhitobjects.h:118
 hedhitobjects.h:119
 hedhitobjects.h:120
 hedhitobjects.h:121
 hedhitobjects.h:122
 hedhitobjects.h:123
 hedhitobjects.h:124
 hedhitobjects.h:125
 hedhitobjects.h:126
 hedhitobjects.h:127
 hedhitobjects.h:128
 hedhitobjects.h:129
 hedhitobjects.h:130
 hedhitobjects.h:131
 hedhitobjects.h:132
 hedhitobjects.h:133
 hedhitobjects.h:134
 hedhitobjects.h:135
 hedhitobjects.h:136
 hedhitobjects.h:137
 hedhitobjects.h:138
 hedhitobjects.h:139
 hedhitobjects.h:140
 hedhitobjects.h:141
 hedhitobjects.h:142
 hedhitobjects.h:143
 hedhitobjects.h:144
 hedhitobjects.h:145
 hedhitobjects.h:146
 hedhitobjects.h:147
 hedhitobjects.h:148
 hedhitobjects.h:149
 hedhitobjects.h:150
 hedhitobjects.h:151
 hedhitobjects.h:152
 hedhitobjects.h:153
 hedhitobjects.h:154
 hedhitobjects.h:155
 hedhitobjects.h:156
 hedhitobjects.h:157
 hedhitobjects.h:158
 hedhitobjects.h:159
 hedhitobjects.h:160
 hedhitobjects.h:161
 hedhitobjects.h:162
 hedhitobjects.h:163
 hedhitobjects.h:164
 hedhitobjects.h:165
 hedhitobjects.h:166
 hedhitobjects.h:167
 hedhitobjects.h:168
 hedhitobjects.h:169
 hedhitobjects.h:170
 hedhitobjects.h:171
 hedhitobjects.h:172
 hedhitobjects.h:173
 hedhitobjects.h:174
 hedhitobjects.h:175
 hedhitobjects.h:176
 hedhitobjects.h:177
 hedhitobjects.h:178
 hedhitobjects.h:179
 hedhitobjects.h:180
 hedhitobjects.h:181
 hedhitobjects.h:182
 hedhitobjects.h:183
 hedhitobjects.h:184
 hedhitobjects.h:185
 hedhitobjects.h:186
 hedhitobjects.h:187
 hedhitobjects.h:188
 hedhitobjects.h:189
 hedhitobjects.h:190
 hedhitobjects.h:191
 hedhitobjects.h:192
 hedhitobjects.h:193
 hedhitobjects.h:194
 hedhitobjects.h:195
 hedhitobjects.h:196
 hedhitobjects.h:197
 hedhitobjects.h:198
 hedhitobjects.h:199
 hedhitobjects.h:200
 hedhitobjects.h:201
 hedhitobjects.h:202
 hedhitobjects.h:203
 hedhitobjects.h:204
 hedhitobjects.h:205
 hedhitobjects.h:206
 hedhitobjects.h:207
 hedhitobjects.h:208
 hedhitobjects.h:209
 hedhitobjects.h:210
 hedhitobjects.h:211
 hedhitobjects.h:212
 hedhitobjects.h:213
 hedhitobjects.h:214
 hedhitobjects.h:215
 hedhitobjects.h:216
 hedhitobjects.h:217
 hedhitobjects.h:218
 hedhitobjects.h:219
 hedhitobjects.h:220
 hedhitobjects.h:221
 hedhitobjects.h:222
 hedhitobjects.h:223
 hedhitobjects.h:224
 hedhitobjects.h:225
 hedhitobjects.h:226
 hedhitobjects.h:227
 hedhitobjects.h:228
 hedhitobjects.h:229
 hedhitobjects.h:230
 hedhitobjects.h:231
 hedhitobjects.h:232
 hedhitobjects.h:233
 hedhitobjects.h:234
 hedhitobjects.h:235
 hedhitobjects.h:236
 hedhitobjects.h:237
 hedhitobjects.h:238
 hedhitobjects.h:239
 hedhitobjects.h:240
 hedhitobjects.h:241
 hedhitobjects.h:242
 hedhitobjects.h:243
 hedhitobjects.h:244
 hedhitobjects.h:245
 hedhitobjects.h:246
 hedhitobjects.h:247
 hedhitobjects.h:248
 hedhitobjects.h:249
 hedhitobjects.h:250
 hedhitobjects.h:251
 hedhitobjects.h:252
 hedhitobjects.h:253
 hedhitobjects.h:254
 hedhitobjects.h:255
 hedhitobjects.h:256
 hedhitobjects.h:257
 hedhitobjects.h:258
 hedhitobjects.h:259
 hedhitobjects.h:260
 hedhitobjects.h:261
 hedhitobjects.h:262
 hedhitobjects.h:263
 hedhitobjects.h:264
 hedhitobjects.h:265
 hedhitobjects.h:266
 hedhitobjects.h:267
 hedhitobjects.h:268
 hedhitobjects.h:269
 hedhitobjects.h:270
 hedhitobjects.h:271
 hedhitobjects.h:272
 hedhitobjects.h:273
 hedhitobjects.h:274
 hedhitobjects.h:275
 hedhitobjects.h:276
 hedhitobjects.h:277
 hedhitobjects.h:278
 hedhitobjects.h:279
 hedhitobjects.h:280
 hedhitobjects.h:281
 hedhitobjects.h:282
 hedhitobjects.h:283
 hedhitobjects.h:284
 hedhitobjects.h:285
 hedhitobjects.h:286
 hedhitobjects.h:287
 hedhitobjects.h:288
 hedhitobjects.h:289
 hedhitobjects.h:290
 hedhitobjects.h:291
 hedhitobjects.h:292
 hedhitobjects.h:293
 hedhitobjects.h:294
 hedhitobjects.h:295
 hedhitobjects.h:296
 hedhitobjects.h:297
 hedhitobjects.h:298
 hedhitobjects.h:299
 hedhitobjects.h:300
 hedhitobjects.h:301
 hedhitobjects.h:302
 hedhitobjects.h:303
 hedhitobjects.h:304
 hedhitobjects.h:305
 hedhitobjects.h:306
 hedhitobjects.h:307
 hedhitobjects.h:308
 hedhitobjects.h:309
 hedhitobjects.h:310
 hedhitobjects.h:311
 hedhitobjects.h:312
 hedhitobjects.h:313
 hedhitobjects.h:314
 hedhitobjects.h:315
 hedhitobjects.h:316
 hedhitobjects.h:317
 hedhitobjects.h:318
 hedhitobjects.h:319
 hedhitobjects.h:320
 hedhitobjects.h:321
 hedhitobjects.h:322
 hedhitobjects.h:323
 hedhitobjects.h:324
 hedhitobjects.h:325
 hedhitobjects.h:326
 hedhitobjects.h:327
 hedhitobjects.h:328
 hedhitobjects.h:329
 hedhitobjects.h:330
 hedhitobjects.h:331
 hedhitobjects.h:332
 hedhitobjects.h:333
 hedhitobjects.h:334
 hedhitobjects.h:335
 hedhitobjects.h:336
 hedhitobjects.h:337
 hedhitobjects.h:338
 hedhitobjects.h:339
 hedhitobjects.h:340
 hedhitobjects.h:341
 hedhitobjects.h:342
 hedhitobjects.h:343
 hedhitobjects.h:344
 hedhitobjects.h:345
 hedhitobjects.h:346
 hedhitobjects.h:347
 hedhitobjects.h:348
 hedhitobjects.h:349
 hedhitobjects.h:350
 hedhitobjects.h:351
 hedhitobjects.h:352
 hedhitobjects.h:353
 hedhitobjects.h:354
 hedhitobjects.h:355
 hedhitobjects.h:356
 hedhitobjects.h:357
 hedhitobjects.h:358
 hedhitobjects.h:359
 hedhitobjects.h:360
 hedhitobjects.h:361
 hedhitobjects.h:362
 hedhitobjects.h:363
 hedhitobjects.h:364
 hedhitobjects.h:365
 hedhitobjects.h:366