1 |
#ifndef PAMVMCCALOID_H |
2 |
#define PAMVMCCALOID_H |
3 |
#include <iostream> |
4 |
#include "TVirtualMC.h" |
5 |
#include "pGeoID.h" |
6 |
|
7 |
#define CALSD "CAST" |
8 |
#define CALOF 3 |
9 |
|
10 |
using std::cout; |
11 |
using std::endl; |
12 |
|
13 |
struct pCalID: public pGeoID { |
14 |
Int_t casiNo; |
15 |
Int_t caplNo; |
16 |
Int_t castNo; |
17 |
|
18 |
pCalID(): casiNo(-1), caplNo(-1), castNo(-1) {}; |
19 |
pCalID(Int_t offset): pGeoID(offset), casiNo(-1), caplNo(-1), castNo(-1) {}; |
20 |
pCalID & operator = (const pCalID &pid) { |
21 |
casiNo=pid.casiNo; |
22 |
caplNo=pid.caplNo; |
23 |
castNo=pid.castNo; |
24 |
return *this; |
25 |
} |
26 |
|
27 |
Bool_t FillVolID(){ |
28 |
Bool_t t=kFALSE; |
29 |
if(gMC) { |
30 |
// if(gMC->CurrentEvent()){ |
31 |
gMC->CurrentVolID(castNo); |
32 |
gMC->CurrentVolOffID(1,casiNo); |
33 |
gMC->CurrentVolOffID(2,caplNo); |
34 |
t= kTRUE; |
35 |
//Print(); |
36 |
//} |
37 |
} |
38 |
return t; |
39 |
} |
40 |
|
41 |
Int_t GetID() const { |
42 |
Int_t fact; |
43 |
switch(casiNo){ |
44 |
case 1: |
45 |
case 4: |
46 |
case 7: |
47 |
fact=0; |
48 |
break; |
49 |
case 2: |
50 |
case 5: |
51 |
case 8: |
52 |
fact=32; |
53 |
break; |
54 |
case 3: |
55 |
case 6: |
56 |
case 9: |
57 |
fact=64; |
58 |
break; |
59 |
default: |
60 |
fact=0; |
61 |
break; |
62 |
} |
63 |
return (caplNo-1)*96+fact+castNo; |
64 |
} |
65 |
|
66 |
void Print(const Option_t* ="") const { |
67 |
cout << " pCalID : castNo " << castNo |
68 |
<< ", casiNo " << casiNo << ", caplNo " << caplNo |
69 |
<< ", actual POS " << GetID() << endl; |
70 |
} |
71 |
|
72 |
}; |
73 |
|
74 |
// class PamVMCCaloID: public PamVMCGeoID { |
75 |
|
76 |
// private: |
77 |
|
78 |
// pCalID fcalid; |
79 |
|
80 |
// public: |
81 |
// PamVMCCaloID() : PamVMCGeoID(CALSD ,CALOF) {}; |
82 |
// void FillVolID(pGeoID *gid){ fcalid = *(pCalID *)gid; }; |
83 |
|
84 |
// //ClassDef(PamVMCCaloID,1) |
85 |
|
86 |
// }; |
87 |
|
88 |
|
89 |
#endif // PAMVMCCALOID_H |