Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
acc2go4
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Pavel Sharov
acc2go4
Commits
ef22b299
Commit
ef22b299
authored
Oct 08, 2024
by
Pavel Sharov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* add writing of multiplicity and etc. for left 1mm detector to TNeEvent
parent
283f92c7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
451 additions
and
452 deletions
+451
-452
NeLinkDef.h
NeLinkDef.h
+1
-0
README.md
README.md
+11
-2
TNeEvent.cxx
TNeEvent.cxx
+1
-0
TNeEvent.h
TNeEvent.h
+2
-0
TNeProc.cxx
TNeProc.cxx
+436
-450
No files found.
NeLinkDef.h
View file @
ef22b299
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
#pragma link C++ class TNeProc+;
#pragma link C++ class TNeProc+;
#pragma link C++ class TNeMParms+;
#pragma link C++ class TNeMParms+;
#pragma link C++ class TNeSel+;
#pragma link C++ class TNeSel+;
#pragma link C++ class TDSSD16+;
#endif
#endif
...
...
README.md
View file @
ef22b299
...
@@ -2,6 +2,15 @@
...
@@ -2,6 +2,15 @@
## 24e01
## 24e01
### Naming conventions
### Naming conventions
-
prefix T
[
number
]
x is for telescope
-
prefix L is for left shoulder R for right
-
By default channel 1--16 for X-strips 16--32 for Y.
-
By default channel 1--16 for X-strips 16--32 for Y.
### TDSSD16
`TDSSD16`
is container for double-side 1mm telescope.
Members:
-
multx,multy --- multiplicity on each side
-
sx,sy --- strip number
-
depx,depy --- Edep in MeV
-
posx,posy --- local position in mm
now only left 1mm detector added to
`TNeEvent`
(it named as
`L1`
).
TNeEvent.cxx
View file @
ef22b299
...
@@ -34,6 +34,7 @@ void TNeEvent::Clear(Option_t *t)
...
@@ -34,6 +34,7 @@ void TNeEvent::Clear(Option_t *t)
//== memset(fRawData,0, sizeof(fRawData));
//== memset(fRawData,0, sizeof(fRawData));
//==================================================================
//==================================================================
// Si
// Si
L1
.
Clear
();
memset
(
Lxa
,
0
,
sizeof
(
Lxa
));
memset
(
Lxa
,
0
,
sizeof
(
Lxa
));
memset
(
Lxt
,
0
,
sizeof
(
Lxt
));
memset
(
Lxt
,
0
,
sizeof
(
Lxt
));
memset
(
Lya
,
0
,
sizeof
(
Lya
));
memset
(
Lya
,
0
,
sizeof
(
Lya
));
...
...
TNeEvent.h
View file @
ef22b299
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
#define TNeEVENT_H
#define TNeEVENT_H
#include "TGo4EventElement.h"
#include "TGo4EventElement.h"
#include "TDSSD16.h"
class
TNeEvent
:
public
TGo4EventElement
class
TNeEvent
:
public
TGo4EventElement
{
{
...
@@ -20,6 +21,7 @@ public:
...
@@ -20,6 +21,7 @@ public:
void
Clear
(
Option_t
*
t
=
""
);
void
Clear
(
Option_t
*
t
=
""
);
//-----Si-----
//-----Si-----
TDSSD16
L1
;
unsigned
short
Lxa
[
16
];
unsigned
short
Lxa
[
16
];
unsigned
short
Lxt
[
16
];
unsigned
short
Lxt
[
16
];
unsigned
short
Lxc
[
16
];
unsigned
short
Lxc
[
16
];
...
...
TNeProc.cxx
View file @
ef22b299
/* -*- mode:c++ c-file-style:"linux" -*- */
//===================================================================
//===================================================================
//== EXPERIMENT A-2
//== EXPERIMENT A-2
//== VERSION: 30.10.2018
//== VERSION: 30.10.2018
...
@@ -49,20 +50,16 @@ TNeProc::TNeProc() : TGo4EventProcessor()
...
@@ -49,20 +50,16 @@ TNeProc::TNeProc() : TGo4EventProcessor()
fTrigger
=
NULL
;
fTrigger
=
NULL
;
fSubEvents
=
NULL
;
fSubEvents
=
NULL
;
fEventsSizes
=
NULL
;
fEventsSizes
=
NULL
;
for
(
i
=
0
;
i
<
4
;
++
i
)
{
for
(
i
=
0
;
i
<
4
;
++
i
)
{
d1F3
[
i
]
=
NULL
;
d1F3
[
i
]
=
NULL
;
d1tF3
[
i
]
=
NULL
;
d1tF3
[
i
]
=
NULL
;
d1F5
[
i
]
=
NULL
;
d1F5
[
i
]
=
NULL
;
d1tF5
[
i
]
=
NULL
;
d1tF5
[
i
]
=
NULL
;
d1tMWPC
[
i
]
=
NULL
;
d1tMWPC
[
i
]
=
NULL
;
}
}
for
(
i
=
0
;
i
<
16
;
++
i
)
for
(
i
=
0
;
i
<
16
;
++
i
)
{
{
//-----Si-----
//-----Si-----
d1Lxa
[
i
]
=
NULL
;
d1Lxa
[
i
]
=
NULL
;
d1Lxt
[
i
]
=
NULL
;
d1Lxt
[
i
]
=
NULL
;
...
@@ -291,7 +288,7 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
...
@@ -291,7 +288,7 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
TGo4Analysis
*
go4
=
TGo4Analysis
::
Instance
();
TGo4Analysis
*
go4
=
TGo4Analysis
::
Instance
();
TNeEvent
*
NeEvent
=
(
TNeEvent
*
)
target
;
TNeEvent
*
NeEvent
=
(
TNeEvent
*
)
target
;
targe
t
->
Clear
();
NeEven
t
->
Clear
();
TGo4MbsSubEvent
*
psubevt
;
TGo4MbsSubEvent
*
psubevt
;
TGo4MbsEvent
*
fInput
=
(
TGo4MbsEvent
*
)
GetInputEvent
();
TGo4MbsEvent
*
fInput
=
(
TGo4MbsEvent
*
)
GetInputEvent
();
...
@@ -316,503 +313,483 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
...
@@ -316,503 +313,483 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
double
af3
=
0.
,
af5
=
0.
,
tf3
=
0.
,
tf5
=
0.
,
ToF
=
0.
;
double
af3
=
0.
,
af5
=
0.
,
tf3
=
0.
,
tf5
=
0.
,
ToF
=
0.
;
fInput
->
ResetIterator
();
fInput
->
ResetIterator
();
while
((
psubevt
=
fInput
->
NextSubEvent
())
!=
0
)
while
((
psubevt
=
fInput
->
NextSubEvent
())
!=
0
)
{
{
num
++
;
num
++
;
sz
+=
psubevt
->
GetIntLen
();
sz
+=
psubevt
->
GetIntLen
();
idata
=
(
uint32_t
*
)
psubevt
->
GetDataField
();
idata
=
(
uint32_t
*
)
psubevt
->
GetDataField
();
n
=
-
1
;
n
=
-
1
;
while
(
++
n
<
psubevt
->
GetIntLen
())
while
(
++
n
<
psubevt
->
GetIntLen
())
{
{
header
=
idata
[
n
]
>>
24
;
header
=
idata
[
n
]
>>
24
;
caen_header
=
header
&
0x7
;
caen_header
=
header
&
0x7
;
if
(
dooutput
)
if
(
dooutput
)
printf
(
"Raw data = %x
\n
"
,
idata
[
n
]);
printf
(
"Raw data = %x
\n
"
,
idata
[
n
]);
switch
(
psubevt
->
GetProcid
())
switch
(
psubevt
->
GetProcid
())
{
{
case
100
:
//VME_0, see setup.usf
case
100
:
//VME_0, see setup.usf
if
(
header
==
0x40
)
m_bool
=
true
;
//MESYTEC header flag
else
if
(
caen_header
==
2
)
if
(
header
==
0x40
)
c_bool
=
true
;
//CAEN header flag
m_bool
=
true
;
//MESYTEC header flag
else
if
((
idata
[
n
]
==
0xaffeaffe
)
||
(
idata
[
n
]
==
0x06000000
)
||
(
idata
[
n
]
==
0x05000000
))
{
else
if
(
caen_header
==
2
)
c_bool
=
false
;
c_bool
=
true
;
//CAEN header flag
m_bool
=
false
;
else
if
((
idata
[
n
]
==
0xaffeaffe
)
||
(
idata
[
n
]
==
0x06000000
)
||
(
idata
[
n
]
==
0x05000000
))
}
{
c_bool
=
false
;
if
(
m_bool
)
{
//in case of MESYTEC data
m_bool
=
false
;
typ
=
idata
[
n
]
>>
30
;
}
switch
(
typ
)
{
case
1
:
//MESYTEC header
if
(
m_bool
)
{
//in case of MESYTEC data
module_id
=
(
idata
[
n
]
>>
16
)
&
0xff
;
typ
=
idata
[
n
]
>>
30
;
if
(
dooutput
)
printf
(
"Mesytec Module ID %d
\n
"
,
module_id
);
switch
(
typ
)
{
break
;
case
1
:
//MESYTEC header
module_id
=
(
idata
[
n
]
>>
16
)
&
0xff
;
if
(
dooutput
)
case
0
:
//MESYTEC data
printf
(
"Mesytec Module ID %d
\n
"
,
module_id
);
if
(
idata
[
n
]
>>
24
!=
0x04
)
break
;
switch
(
module_id
)
{
case
0
:
//mTDC: ToF
if
((
idata
[
n
]
>>
16
)
&
0x20
)
break
;
//T bit analysis
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0xffff
;
//only 16 bits
if
(
chnl
<
4
)
NeEvent
->
tF3
[
chnl
]
=
adc
;
else
if
(
chnl
<
8
)
NeEvent
->
tF5
[
chnl
-
4
]
=
adc
;
else
if
(
chnl
<
12
);
else
if
(
chnl
<
16
)
NeEvent
->
tMWPC
[
chnl
-
12
]
=
adc
;
break
;
case
1
:
//mQDC:
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
4
)
NeEvent
->
F3
[
chnl
]
=
adc
;
else
if
(
chnl
<
8
)
NeEvent
->
F5
[
chnl
-
4
]
=
adc
;
break
;
case
6
:
//scaler v560
for
(
i
=
0
;
i
<
16
;
++
i
)
NeEvent
->
scaler
[
i
]
=
idata
[
n
++
]
&
0x07ffffff
;
break
;
break
;
case
8
:
// mTDC: time Lx & Ly
case
0
:
//MESYTEC data
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
if
(
idata
[
n
]
>>
24
!=
0x04
)
break
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
switch
(
module_id
)
{
if
(
chnl
<
16
)
{
case
0
:
//mTDC: ToF
NeEvent
->
Lxt
[
chnl
]
=
adc
;
if
((
idata
[
n
]
>>
16
)
&
0x20
)
break
;
//T bit analysis
}
else
if
(
chnl
<
32
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
Lyt
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0xffff
;
//only 16 bits
}
if
(
chnl
<
4
)
NeEvent
->
tF3
[
chnl
]
=
adc
;
break
;
else
if
(
chnl
<
8
)
NeEvent
->
tF5
[
chnl
-
4
]
=
adc
;
else
if
(
chnl
<
12
);
case
9
:
// mADC: amp Lx & Ly
else
if
(
chnl
<
16
)
NeEvent
->
tMWPC
[
chnl
-
12
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
break
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
case
1
:
//mQDC:
if
(
chnl
<
16
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
Lxa
[
chnl
]
=
adc
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
}
else
{
if
(
chnl
<
4
)
NeEvent
->
F3
[
chnl
]
=
adc
;
NeEvent
->
Lya
[
chnl
-
16
]
=
adc
;
else
if
(
chnl
<
8
)
NeEvent
->
F5
[
chnl
-
4
]
=
adc
;
}
break
;
break
;
case
10
:
// mTDC: time Rx & Ry
case
6
:
//scaler v560
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
for
(
i
=
0
;
i
<
16
;
++
i
)
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
NeEvent
->
scaler
[
i
]
=
idata
[
n
++
]
&
0x07ffffff
;
if
(
chnl
<
16
)
{
break
;
NeEvent
->
Rxt
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
case
8
:
// mTDC: time Lx & Ly
NeEvent
->
Ryt
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
}
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
Lxt
[
chnl
]
=
adc
;
case
11
:
// mADC: amp Rx & Ry
}
else
if
(
chnl
<
32
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
Lyt
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
Rxa
[
chnl
]
=
adc
;
}
else
{
case
9
:
// mADC: amp Lx & Ly
NeEvent
->
Rya
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
}
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
Lxa
[
chnl
]
=
adc
;
case
12
:
// mTDC: time An S & R
}
else
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
NeEvent
->
Lya
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
AnSt
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
case
10
:
// mTDC: time Rx & Ry
NeEvent
->
AnRt
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
}
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
Rxt
[
chnl
]
=
adc
;
case
13
:
// mADC: amp An S & R
}
else
if
(
chnl
<
32
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
Ryt
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
AnSa
[
chnl
]
=
adc
;
}
else
{
case
11
:
// mADC: amp Rx & Ry
NeEvent
->
AnRa
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
}
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
Rxa
[
chnl
]
=
adc
;
case
14
:
// mTDC: time R20 & AnV
}
else
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
NeEvent
->
Rya
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
AnVt
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
case
12
:
// mTDC: time An S & R
NeEvent
->
R20t
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
}
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
AnSt
[
chnl
]
=
adc
;
case
15
:
// mADC: amp R20 & AnV
}
else
if
(
chnl
<
32
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
AnRt
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
AnVa
[
chnl
]
=
adc
;
}
else
{
case
13
:
// mADC: amp An S & R
NeEvent
->
R20a
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
}
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
AnSa
[
chnl
]
=
adc
;
case
2
:
// mTDC: time Rcs & Lcs
}
else
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
NeEvent
->
AnRa
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
Lcst
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
case
14
:
// mTDC: time R20 & AnV
NeEvent
->
Rcst
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
}
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
AnVt
[
chnl
]
=
adc
;
case
3
:
// mADC: amp Rcs & Lcs
}
else
if
(
chnl
<
32
)
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
NeEvent
->
R20t
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
}
if
(
chnl
<
16
)
{
break
;
NeEvent
->
Lcsa
[
chnl
]
=
adc
;
}
else
{
case
15
:
// mADC: amp R20 & AnV
NeEvent
->
Rcsa
[
chnl
-
16
]
=
adc
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
}
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
break
;
if
(
chnl
<
16
)
{
NeEvent
->
AnVa
[
chnl
]
=
adc
;
case
4
:
// mTDC: time Rvt
}
else
{
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
NeEvent
->
R20a
[
chnl
-
16
]
=
adc
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
}
break
;
case
2
:
// mTDC: time Rcs & Lcs
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lcst
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
NeEvent
->
Rcst
[
chnl
-
16
]
=
adc
;
}
break
;
case
3
:
// mADC: amp Rcs & Lcs
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lcsa
[
chnl
]
=
adc
;
}
else
{
NeEvent
->
Rcsa
[
chnl
-
16
]
=
adc
;
}
break
;
case
4
:
// mTDC: time Rvt
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
NeEvent
->
Rvt
[
chnl
]
=
adc
;
if
(
chnl
<
16
)
NeEvent
->
Rvt
[
chnl
]
=
adc
;
break
;
break
;
case
5
:
// mADC: amp Ra
case
5
:
// mADC: amp Ra
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
adc
=
idata
[
n
]
&
0x1fff
;
//only 12 bits
if
(
chnl
<
16
)
NeEvent
->
Rva
[
chnl
]
=
adc
;
if
(
chnl
<
16
)
NeEvent
->
Rva
[
chnl
]
=
adc
;
break
;
break
;
}
break
;
case
3
:
//-----MESYTEC footer-----
m_bool
=
false
;
break
;
default
:
printf
(
"ERROR !!!!!! Unknown MESYTEC typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
}
break
;
else
if
(
c_bool
)
//in case of CAEN data
{
typ
=
(
idata
[
n
]
>>
24
)
&
0x7
;
geo
=
idata
[
n
]
>>
27
;
if
(
dooutput
)
printf
(
"CAEN geo %d
\n
"
,
geo
);
switch
(
typ
)
{
case
2
:
//CAEN header
crate
=
(
idata
[
n
]
>>
16
)
&
0xff
;
cnt
=
(
idata
[
n
]
>>
8
)
&
0x1f
;
if
(
geo
==
30
)
NeEvent
->
mtime
=
idata
[
++
n
];
//machine time
if
(
dooutput
)
printf
(
"Header: geo:%d crate:%d cnt = %d
\n
"
,
geo
,
crate
,
cnt
);
break
;
case
0
:
//CAEN data
adc
=
idata
[
n
]
&
0xfff
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
//printf("DATA: geo:%d Channel = %d\n", geo, chnl);
switch
(
geo
)
{
}
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break
;
case
4
:
//CAEN footer
c_bool
=
false
;
evnt
=
idata
[
n
]
&
0xffffff
;
if
(
dooutput
)
printf
(
" Event: geo:%d number:%d
\n
"
,
geo
,
evnt
);
break
;
case
6
:
//CAEN no valid data
c_bool
=
false
;
if
(
dooutput
)
printf
(
"!!!No valid data from CAEN!!!"
);
break
;
default
:
case
3
:
//-----MESYTEC footer-----
printf
(
"ERROR !!!!!! Uncknown CAEN typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
break
;
//end of VME_0
case
101
:
// CAMAC through VME_0, see setup.usf
geo
=
idata
[
n
]
>>
27
;
switch
(
geo
)
{
case
1
:
NeEvent
->
nx1
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC X1= %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x1
[
NeEvent
->
nx1
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC X1= %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x1
[
NeEvent
->
nx1
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass throug footer
//printf("Third word from MWPC X1= %x\n", adc);
NeEvent
->
rx1
=
MSBLSB
;
break
;
case
2
:
NeEvent
->
ny1
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC Y1 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y1
[
NeEvent
->
ny1
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC Y1 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y1
[
NeEvent
->
ny1
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass through footer
//printf("Third word from MWPC Y1 = %x\n", adc);
NeEvent
->
ry1
=
MSBLSB
;
break
;
case
3
:
NeEvent
->
nx2
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC X2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x2
[
NeEvent
->
nx2
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC X2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x2
[
NeEvent
->
nx2
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass through footer
//printf("Third word from MWPC X2 = %x\n", adc);
NeEvent
->
rx2
=
MSBLSB
;
break
;
case
4
:
NeEvent
->
ny2
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC Y2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y2
[
NeEvent
->
ny2
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC Y2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y2
[
NeEvent
->
ny2
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass throug footer
//printf("Third word from MWPC Y2 = %x\n", adc);
NeEvent
->
ry2
=
MSBLSB
;
break
;
}
break
;
// end of CAMAC
case
200
:
//VME_1, see setup.usf
if
(
header
==
0x40
)
m_bool
=
true
;
//MESYTEC header flag
else
if
(
caen_header
==
2
)
c_bool
=
true
;
//CAEN header flag
else
if
((
idata
[
n
]
==
0xaffeaffe
)
||
(
idata
[
n
]
==
0x06000000
)
||
(
idata
[
n
]
==
0x05000000
))
{
c_bool
=
false
;
m_bool
=
false
;
m_bool
=
false
;
break
;
default
:
printf
(
"ERROR !!!!!! Unknown MESYTEC typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
}
else
if
(
c_bool
)
{
//in case of CAEN data
typ
=
(
idata
[
n
]
>>
24
)
&
0x7
;
geo
=
idata
[
n
]
>>
27
;
if
(
dooutput
)
printf
(
"CAEN geo %d
\n
"
,
geo
);
switch
(
typ
)
{
case
2
:
//CAEN header
crate
=
(
idata
[
n
]
>>
16
)
&
0xff
;
cnt
=
(
idata
[
n
]
>>
8
)
&
0x1f
;
if
(
geo
==
30
)
NeEvent
->
mtime
=
idata
[
++
n
];
//machine time
if
(
dooutput
)
printf
(
"Header: geo:%d crate:%d cnt = %d
\n
"
,
geo
,
crate
,
cnt
);
break
;
case
0
:
//CAEN data
adc
=
idata
[
n
]
&
0xfff
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
//printf("DATA: geo:%d Channel = %d\n", geo, chnl);
/*switch(geo)
{
}*/
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break
;
case
4
:
//CAEN footer
c_bool
=
false
;
evnt
=
idata
[
n
]
&
0xffffff
;
if
(
dooutput
)
printf
(
" Event: geo:%d number:%d
\n
"
,
geo
,
evnt
);
break
;
case
6
:
//CAEN no valid data
c_bool
=
false
;
if
(
dooutput
)
printf
(
"!!!No valid data from CAEN!!!"
);
break
;
default
:
printf
(
"ERROR !!!!!! Uncknown CAEN typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
break
;
//end of VME_0
case
101
:
// CAMAC through VME_0, see setup.usf
geo
=
idata
[
n
]
>>
27
;
switch
(
geo
)
{
case
1
:
NeEvent
->
nx1
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC X1= %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x1
[
NeEvent
->
nx1
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC X1= %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x1
[
NeEvent
->
nx1
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass throug footer
//printf("Third word from MWPC X1= %x\n", adc);
NeEvent
->
rx1
=
MSBLSB
;
break
;
case
2
:
NeEvent
->
ny1
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC Y1 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y1
[
NeEvent
->
ny1
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC Y1 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y1
[
NeEvent
->
ny1
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass through footer
//printf("Third word from MWPC Y1 = %x\n", adc);
NeEvent
->
ry1
=
MSBLSB
;
break
;
case
3
:
NeEvent
->
nx2
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC X2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x2
[
NeEvent
->
nx2
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC X2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
x2
[
NeEvent
->
nx2
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass through footer
//printf("Third word from MWPC X2 = %x\n", adc);
NeEvent
->
rx2
=
MSBLSB
;
break
;
case
4
:
NeEvent
->
ny2
=
0
;
adc
=
idata
[
++
n
];
LSB
=
adc
;
//printf("First word from MWPC Y2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y2
[
NeEvent
->
ny2
++
]
=
i
;
adc
=
idata
[
++
n
];
MSB
=
adc
;
MSBLSB
=
(
MSB
<<
16
)
|
LSB
;
//printf("Second word from MWPC Y2 = %x\n", adc);
for
(
i
=
0
;
i
<
16
;
++
i
)
if
((
adc
&
bit
[
i
])
>
0
)
NeEvent
->
y2
[
NeEvent
->
ny2
++
]
=
i
+
16
;
adc
=
idata
[
++
n
];
//pass throug footer
//printf("Third word from MWPC Y2 = %x\n", adc);
NeEvent
->
ry2
=
MSBLSB
;
break
;
}
if
(
m_bool
)
//in case of MESYTEC data
break
;
// end of CAMAC
{
typ
=
idata
[
n
]
>>
30
;
switch
(
typ
)
{
case
1
:
//MESYTEC header
module_id
=
(
idata
[
n
]
>>
16
)
&
0xff
;
if
(
dooutput
)
printf
(
"Mesytec Module ID %d
\n
"
,
module_id
);
break
;
case
0
:
//MESYTEC data
if
(
idata
[
n
]
>>
24
!=
0x04
)
break
;
switch
(
module_id
)
{
case
3
:
// mTDC: time sect & rings p1
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lxt
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
NeEvent
->
Lyt
[
chnl
-
16
]
=
adc
;
}
break
;
case
4
:
// mADC: amp sect & rings p1
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lxa
[
chnl
]
=
adc
;
}
else
{
NeEvent
->
Lya
[
chnl
-
16
]
=
adc
;
}
break
;
}
break
;
case
3
:
//-----MESYTEC footer-----
case
200
:
//VME_1, see setup.usf
m_bool
=
false
;
break
;
default
:
if
(
header
==
0x40
)
printf
(
"ERROR !!!!!! Unknown MESYTEC typ %d
\n
"
,
typ
);
m_bool
=
true
;
//MESYTEC header flag
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
else
if
(
caen_header
==
2
)
c_bool
=
true
;
//CAEN header flag
else
if
((
idata
[
n
]
==
0xaffeaffe
)
||
(
idata
[
n
]
==
0x06000000
)
||
(
idata
[
n
]
==
0x05000000
))
{
c_bool
=
false
;
m_bool
=
false
;
}
if
(
m_bool
)
//in case of MESYTEC data
{
typ
=
idata
[
n
]
>>
30
;
switch
(
typ
)
{
case
1
:
//MESYTEC header
module_id
=
(
idata
[
n
]
>>
16
)
&
0xff
;
if
(
dooutput
)
printf
(
"Mesytec Module ID %d
\n
"
,
module_id
);
break
;
case
0
:
//MESYTEC data
if
(
idata
[
n
]
>>
24
!=
0x04
)
break
;
switch
(
module_id
)
{
case
3
:
// mTDC: time sect & rings p1
chnl
=
(
idata
[
n
]
>>
16
)
&
0x3f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lxt
[
chnl
]
=
adc
;
}
else
if
(
chnl
<
32
)
{
NeEvent
->
Lyt
[
chnl
-
16
]
=
adc
;
}
break
;
case
4
:
// mADC: amp sect & rings p1
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
adc
=
idata
[
n
]
&
0xfff
;
//only 12 bits
if
(
chnl
<
16
)
{
NeEvent
->
Lxa
[
chnl
]
=
adc
;
}
else
{
NeEvent
->
Lya
[
chnl
-
16
]
=
adc
;
}
break
;
break
;
}
}
break
;
case
3
:
//-----MESYTEC footer-----
m_bool
=
false
;
break
;
default
:
printf
(
"ERROR !!!!!! Unknown MESYTEC typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
else
if
(
c_bool
)
//in case of CAEN data
}
{
else
if
(
c_bool
)
{
//in case of CAEN data
typ
=
(
idata
[
n
]
>>
24
)
&
0x7
;
geo
=
idata
[
n
]
>>
27
;
typ
=
(
idata
[
n
]
>>
24
)
&
0x7
;
geo
=
idata
[
n
]
>>
27
;
if
(
dooutput
)
printf
(
"CAEN geo %d
\n
"
,
geo
);
switch
(
typ
)
{
case
2
:
//CAEN header
crate
=
(
idata
[
n
]
>>
16
)
&
0xff
;
cnt
=
(
idata
[
n
]
>>
8
)
&
0x1f
;
if
(
geo
==
30
)
NeEvent
->
mtime
=
idata
[
++
n
];
//machine time
if
(
dooutput
)
if
(
dooutput
)
printf
(
"CAEN geo %d
\n
"
,
geo
);
printf
(
"Header: geo:%d crate:%d cnt = %d
\n
"
,
geo
,
crate
,
cnt
);
break
;
switch
(
typ
)
{
case
0
:
//CAEN data
case
2
:
//CAEN header
adc
=
idata
[
n
]
&
0xfff
;
crate
=
(
idata
[
n
]
>>
16
)
&
0xff
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
cnt
=
(
idata
[
n
]
>>
8
)
&
0x1f
;
//printf("DATA: geo:%d Channel = %d\n", geo, chnl);
if
(
geo
==
30
)
switch
(
geo
)
{
NeEvent
->
mtime
=
idata
[
++
n
];
//machine time
case
6
:
//scaler v560
for
(
i
=
0
;
i
<
16
;
++
i
)
if
(
dooutput
)
NeEvent
->
scaler
[
i
]
=
idata
[
n
++
]
&
0x07ffffff
;
printf
(
"Header: geo:%d crate:%d cnt = %d
\n
"
,
geo
,
crate
,
cnt
);
break
;
case
0
:
//CAEN data
adc
=
idata
[
n
]
&
0xfff
;
chnl
=
(
idata
[
n
]
>>
16
)
&
0x1f
;
//printf("DATA: geo:%d Channel = %d\n", geo, chnl);
switch
(
geo
)
{
case
6
:
//scaler v560
for
(
i
=
0
;
i
<
16
;
++
i
)
NeEvent
->
scaler
[
i
]
=
idata
[
n
++
]
&
0x07ffffff
;
break
;
}
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break
;
case
4
:
//CAEN footer
c_bool
=
false
;
evnt
=
idata
[
n
]
&
0xffffff
;
if
(
dooutput
)
printf
(
" Event: geo:%d number:%d
\n
"
,
geo
,
evnt
);
break
;
case
6
:
//CAEN no valid data
c_bool
=
false
;
if
(
dooutput
)
printf
(
"!!!No valid data from CAEN!!!"
);
break
;
default
:
printf
(
"ERROR !!!!!! Uncknown CAEN typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
break
;
}
}
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break
;
case
4
:
//CAEN footer
c_bool
=
false
;
evnt
=
idata
[
n
]
&
0xffffff
;
if
(
dooutput
)
printf
(
" Event: geo:%d number:%d
\n
"
,
geo
,
evnt
);
break
;
case
6
:
//CAEN no valid data
c_bool
=
false
;
if
(
dooutput
)
printf
(
"!!!No valid data from CAEN!!!"
);
break
;
default
:
printf
(
"ERROR !!!!!! Uncknown CAEN typ %d
\n
"
,
typ
);
printf
(
"Data = %x
\n
"
,
idata
[
n
]);
break
;
}
}
break
;
//end of VME_1
}
break
;
//end of VME_1
}
//end of GetProcID
}
//end of GetProcID
}
//end of GetIntLen
}
//end of GetIntLen
}
//end of NextSubEvent
}
//end of NextSubEvent
NeEvent
->
nevent
=
fInput
->
GetCount
();
NeEvent
->
nevent
=
fInput
->
GetCount
();
NeEvent
->
trigger
=
fInput
->
GetTrigger
();
NeEvent
->
trigger
=
fInput
->
GetTrigger
();
NeEvent
->
subevents
=
num
;
NeEvent
->
subevents
=
num
;
NeEvent
->
evsize
=
sz
;
NeEvent
->
evsize
=
sz
;
fTrigger
->
Fill
(
NeEvent
->
trigger
);
fTrigger
->
Fill
(
NeEvent
->
trigger
);
fSubEvents
->
Fill
(
num
);
fSubEvents
->
Fill
(
num
);
fEventsSizes
->
Fill
(
sz
);
fEventsSizes
->
Fill
(
sz
);
//
//
for
(
n
=
0
;
n
<
4
;
++
n
)
for
(
n
=
0
;
n
<
4
;
++
n
)
{
// if(NeEvent->trigger == 2)
// if(NeEvent->trigger == 2)
{
if
(
NeEvent
->
F3
[
n
]
>
0
)
d1F3
[
n
]
->
Fill
(
NeEvent
->
F3
[
n
]);
if
(
NeEvent
->
F3
[
n
]
>
0
)
d1F3
[
n
]
->
Fill
(
NeEvent
->
F3
[
n
]);
if
(
NeEvent
->
F5
[
n
]
>
0
)
d1F5
[
n
]
->
Fill
(
NeEvent
->
F5
[
n
]);
if
(
NeEvent
->
F5
[
n
]
>
0
)
d1F5
[
n
]
->
Fill
(
NeEvent
->
F5
[
n
]);
if
(
NeEvent
->
tF3
[
n
]
>
0
)
d1tF3
[
n
]
->
Fill
(
NeEvent
->
tF3
[
n
]);
if
(
NeEvent
->
tF3
[
n
]
>
0
)
d1tF3
[
n
]
->
Fill
(
NeEvent
->
tF3
[
n
]);
if
(
NeEvent
->
tF5
[
n
]
>
0
)
d1tF5
[
n
]
->
Fill
(
NeEvent
->
tF5
[
n
]);
if
(
NeEvent
->
tF5
[
n
]
>
0
)
d1tF5
[
n
]
->
Fill
(
NeEvent
->
tF5
[
n
]);
if
(
NeEvent
->
tMWPC
[
n
]
>
0
)
d1tMWPC
[
n
]
->
Fill
(
NeEvent
->
tMWPC
[
n
]);
if
(
NeEvent
->
tMWPC
[
n
]
>
0
)
d1tMWPC
[
n
]
->
Fill
(
NeEvent
->
tMWPC
[
n
]);
}
}
//
//
if
(
NeEvent
->
F3
[
0
]
>
0
&&
NeEvent
->
F3
[
1
]
>
0
&&
NeEvent
->
F3
[
2
]
>
0
&&
NeEvent
->
F3
[
3
]
>
0
)
if
(
NeEvent
->
F3
[
0
]
>
0
&&
NeEvent
->
F3
[
1
]
>
0
&&
NeEvent
->
F3
[
2
]
>
0
&&
NeEvent
->
F3
[
3
]
>
0
)
af3
=
(
NeEvent
->
F3
[
0
]
+
NeEvent
->
F3
[
1
]
+
NeEvent
->
F3
[
2
]
+
NeEvent
->
F3
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
af3
=
(
NeEvent
->
F3
[
0
]
+
NeEvent
->
F3
[
1
]
+
NeEvent
->
F3
[
2
]
+
NeEvent
->
F3
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
if
(
NeEvent
->
F5
[
0
]
>
0
&&
NeEvent
->
F5
[
1
]
>
0
&&
NeEvent
->
F5
[
2
]
>
0
&&
NeEvent
->
F5
[
3
]
>
0
)
if
(
NeEvent
->
F5
[
0
]
>
0
&&
NeEvent
->
F5
[
1
]
>
0
&&
NeEvent
->
F5
[
2
]
>
0
&&
NeEvent
->
F5
[
3
]
>
0
)
af5
=
(
NeEvent
->
F5
[
0
]
+
NeEvent
->
F5
[
1
]
+
NeEvent
->
F5
[
2
]
+
NeEvent
->
F5
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
af5
=
(
NeEvent
->
F5
[
0
]
+
NeEvent
->
F5
[
1
]
+
NeEvent
->
F5
[
2
]
+
NeEvent
->
F5
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
if
(
NeEvent
->
tF3
[
0
]
>
0
&&
NeEvent
->
tF3
[
1
]
>
0
&&
NeEvent
->
tF3
[
2
]
>
0
&&
NeEvent
->
tF3
[
3
]
>
0
)
if
(
NeEvent
->
tF3
[
0
]
>
0
&&
NeEvent
->
tF3
[
1
]
>
0
&&
NeEvent
->
tF3
[
2
]
>
0
&&
NeEvent
->
tF3
[
3
]
>
0
)
tf3
=
(
NeEvent
->
tF3
[
0
]
+
NeEvent
->
tF3
[
1
]
+
NeEvent
->
tF3
[
2
]
+
NeEvent
->
tF3
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
tf3
=
(
NeEvent
->
tF3
[
0
]
+
NeEvent
->
tF3
[
1
]
+
NeEvent
->
tF3
[
2
]
+
NeEvent
->
tF3
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
if
(
NeEvent
->
tF5
[
0
]
>
0
&&
NeEvent
->
tF5
[
1
]
>
0
&&
NeEvent
->
tF5
[
2
]
>
0
&&
NeEvent
->
tF5
[
3
]
>
0
)
if
(
NeEvent
->
tF5
[
0
]
>
0
&&
NeEvent
->
tF5
[
1
]
>
0
&&
NeEvent
->
tF5
[
2
]
>
0
&&
NeEvent
->
tF5
[
3
]
>
0
)
tf5
=
(
NeEvent
->
tF5
[
0
]
+
NeEvent
->
tF5
[
1
]
+
NeEvent
->
tF5
[
2
]
+
NeEvent
->
tF5
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
tf5
=
(
NeEvent
->
tF5
[
0
]
+
NeEvent
->
tF5
[
1
]
+
NeEvent
->
tF5
[
2
]
+
NeEvent
->
tF5
[
3
]
+
4.
*
gRandom
->
Uniform
())
/
4.
;
//
//
// ToF = (tf5 - tf3)*0.125+89.165;
// ToF = (tf5 - tf3)*0.125+89.165;
// ToF = (tf5 - tf3)*0.0625;
// ToF = (tf5 - tf3)*0.0625;
// ToF = (tf5 - tf3)*0.0625 + 68.55;
// ToF = (tf5 - tf3)*0.0625 + 68.55;
// ToF = (tf5 - tf3)*0.0625 + 68.475;
// ToF = (tf5 - tf3)*0.0625 + 68.475;
ToF
=
(
tf5
-
tf3
)
*
0.015625
+
68.475
;
ToF
=
(
tf5
-
tf3
)
*
0.015625
+
68.475
;
if
(
af3
*
af5
*
tf3
*
tf5
!=
0
)
if
(
af3
*
af5
*
tf3
*
tf5
!=
0
)
{
{
// if(NeEvent->trigger == 1)
// if(NeEvent->trigger == 1)
{
d1ToF
->
Fill
(
ToF
);
d1ToF
->
Fill
(
ToF
);
d1aF3
->
Fill
(
af3
);
d1aF3
->
Fill
(
af3
);
d2ToFaF3
->
Fill
(
ToF
,
af3
);
d2ToFaF3
->
Fill
(
ToF
,
af3
);
d1aF5
->
Fill
(
af5
);
d1aF5
->
Fill
(
af5
);
d2ToFaF5
->
Fill
(
ToF
,
af5
);
d2ToFaF5
->
Fill
(
ToF
,
af5
);
}
}
}
for
(
int
n
=
0
;
n
<
16
;
++
n
)
{
for
(
int
n
=
0
;
n
<
16
;
++
n
)
{
// if(NeEvent->Lxt[n]>0)
// if(NeEvent->Lxt[n]>0)
...
@@ -894,22 +871,31 @@ ToF = (tf5 - tf3)*0.015625 + 68.475;
...
@@ -894,22 +871,31 @@ ToF = (tf5 - tf3)*0.015625 + 68.475;
*/
*/
//______ calibrated spectra __________________________
//______ calibrated spectra __________________________
for
(
n
=
0
;
n
<
16
;
++
n
)
for
(
int
n
=
0
;
n
<
16
;
++
n
)
{
{
if
(
NeEvent
->
Lxt
[
n
]
>
0
){
if
(
NeEvent
->
Lxt
[
n
]
>
0
){
value1
=
(
double
)
NeEvent
->
Lxa
[
n
]
+
gRandom
->
Uniform
();
value1
=
(
double
)
NeEvent
->
Lxa
[
n
]
+
gRandom
->
Uniform
();
value2
=
((
TNeAnalysis
*
)
go4
)
->
p_Lxa
->
Energy
(
value1
,
n
);
value2
=
((
TNeAnalysis
*
)
go4
)
->
p_Lxa
->
Energy
(
value1
,
n
);
d1Lxc
[
n
]
->
Fill
(
value2
);
d1Lxc
[
n
]
->
Fill
(
value2
);
mLxa
++
;
mLxa
++
;
eLxa
=
value2
;
eLxa
=
value2
;
// fill TNeEvent
NeEvent
->
L1
.
sx
[
NeEvent
->
L1
.
multx
]
=
n
;
NeEvent
->
L1
.
posx
[
NeEvent
->
L1
.
multx
]
=
NeEvent
->
L1
.
str2pos
(
n
);
NeEvent
->
L1
.
depx
[
NeEvent
->
L1
.
multx
]
=
value2
;
NeEvent
->
L1
.
multx
++
;
}
}
if
(
NeEvent
->
Lyt
[
n
]
>
0
){
if
(
NeEvent
->
Lyt
[
n
]
>
0
){
value1
=
(
double
)
NeEvent
->
Lya
[
n
]
+
gRandom
->
Uniform
();
value1
=
(
double
)
NeEvent
->
Lya
[
n
]
+
gRandom
->
Uniform
();
value2
=
((
TNeAnalysis
*
)
go4
)
->
p_Lya
->
Energy
(
value1
,
n
);
value2
=
((
TNeAnalysis
*
)
go4
)
->
p_Lya
->
Energy
(
value1
,
n
);
d1Lyc
[
n
]
->
Fill
(
value2
);
d1Lyc
[
n
]
->
Fill
(
value2
);
mLya
++
;
mLya
++
;
eLya
=
value2
;
eLya
=
value2
;
NeEvent
->
L1
.
sy
[
NeEvent
->
L1
.
multy
]
=
n
;
NeEvent
->
L1
.
posy
[
NeEvent
->
L1
.
multy
]
=
NeEvent
->
L1
.
str2pos
(
n
);
NeEvent
->
L1
.
depy
[
NeEvent
->
L1
.
multy
]
=
value2
;
NeEvent
->
L1
.
multy
++
;
}
}
if
(
NeEvent
->
Rxt
[
n
]
>
0
){
if
(
NeEvent
->
Rxt
[
n
]
>
0
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment