Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
calypso
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
faser
calypso
Commits
e18e8d3f
Commit
e18e8d3f
authored
1 year ago
by
FASER Reco
Browse files
Options
Downloads
Patches
Plain Diff
Fixes merged from p0010
parent
beaa8097
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!350
p0010 patches
Pipeline
#5461763
passed
1 year ago
Stage: build
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
+30
-18
30 additions, 18 deletions
Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
LHCData/LHCDataAlgs/src/LHCDataAlg.cxx
+58
-11
58 additions, 11 deletions
LHCData/LHCDataAlgs/src/LHCDataAlg.cxx
with
88 additions
and
29 deletions
Control/CalypsoExample/Reconstruction/scripts/faser_reco.py
+
30
−
18
View file @
e18e8d3f
...
...
@@ -29,6 +29,8 @@ parser.add_argument("-r", "--reco", default="",
help
=
"
Specify reco tag (to append to output filename)
"
)
parser
.
add_argument
(
"
-n
"
,
"
--nevents
"
,
type
=
int
,
default
=-
1
,
help
=
"
Specify number of events to process (default: all)
"
)
parser
.
add_argument
(
"
--skip
"
,
type
=
int
,
default
=
0
,
help
=
"
Specify number of events to skip (default: none)
"
)
parser
.
add_argument
(
"
-v
"
,
"
--verbose
"
,
action
=
'
store_true
'
,
help
=
"
Turn on DEBUG output
"
)
parser
.
add_argument
(
"
--isMC
"
,
action
=
'
store_true
'
,
...
...
@@ -37,6 +39,8 @@ parser.add_argument("--MC_calibTag", default="",
help
=
"
Specify tag used to reconstruct MC calo energy: (WAVE-Calibration-01-LG-nofilt, WAVE-Calibration-01-LG, WAVE-Calibration-01-HG-nofilt, or WAVE-Calibration-01-HG)
"
)
parser
.
add_argument
(
"
--testBeam
"
,
action
=
'
store_true
'
,
help
=
"
Set geometry for 2021 test beam
"
)
parser
.
add_argument
(
"
--isOverlay
"
,
action
=
'
store_true
'
,
help
=
"
Set overlaid data input
"
)
args
=
parser
.
parse_args
()
...
...
@@ -81,6 +85,8 @@ else:
print
(
f
"
Starting reconstruction of
{
filepath
.
name
}
with type
{
runtype
}
"
)
if
args
.
nevents
>
0
:
print
(
f
"
Reconstructing
{
args
.
nevents
}
events by command-line option
"
)
if
args
.
skip
>
0
:
print
(
f
"
Skipping
{
args
.
skip
}
events by command-line option
"
)
# Start reconstruction
...
...
@@ -103,6 +109,8 @@ else:
ConfigFlags
.
Input
.
ProjectName
=
"
data20
"
ConfigFlags
.
GeoModel
.
Align
.
Dynamic
=
False
ConfigFlags
.
Exec
.
SkipEvents
=
args
.
skip
# Flags for later
useCKF
=
True
useCal
=
False
...
...
@@ -173,7 +181,7 @@ acc.merge(PoolWriteCfg(ConfigFlags))
#
# Set up RAW data access
if
args
.
isMC
:
if
args
.
isMC
or
args
.
isOverlay
:
from
AthenaPoolCnvSvc.PoolReadConfig
import
PoolReadCfg
acc
.
merge
(
PoolReadCfg
(
ConfigFlags
))
else
:
...
...
@@ -185,22 +193,24 @@ else:
from
FaserGeoModel.FaserGeoModelConfig
import
FaserGeometryCfg
acc
.
merge
(
FaserGeometryCfg
(
ConfigFlags
))
if
useLHC
:
if
useLHC
and
not
args
.
isOverlay
:
from
LHCDataAlgs.LHCDataAlgConfig
import
LHCDataAlgCfg
acc
.
merge
(
LHCDataAlgCfg
(
ConfigFlags
))
# Set up algorithms
from
WaveRecAlgs.WaveRecAlgsConfig
import
WaveformReconstructionCfg
acc
.
merge
(
WaveformReconstructionCfg
(
ConfigFlags
))
if
not
args
.
isOverlay
:
from
WaveRecAlgs.WaveRecAlgsConfig
import
WaveformReconstructionCfg
acc
.
merge
(
WaveformReconstructionCfg
(
ConfigFlags
))
# Calorimeter Energy reconstruction
if
useCal
:
from
CaloRecAlgs.CaloRecAlgsConfig
import
CalorimeterReconstructionCfg
acc
.
merge
(
CalorimeterReconstructionCfg
(
ConfigFlags
,
MC_calibTag
=
args
.
MC_calibTag
))
# Calorimeter Energy reconstruction
if
useCal
:
from
CaloRecAlgs.CaloRecAlgsConfig
import
CalorimeterReconstructionCfg
acc
.
merge
(
CalorimeterReconstructionCfg
(
ConfigFlags
,
MC_calibTag
=
args
.
MC_calibTag
))
# Tracker clusters
from
TrackerPrepRawDataFormation.TrackerPrepRawDataFormationConfig
import
FaserSCT_ClusterizationCfg
acc
.
merge
(
FaserSCT_ClusterizationCfg
(
ConfigFlags
,
DataObjectName
=
"
SCT_RDOs
"
))
# acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="Pos_SCT_RDOs"))
acc
.
merge
(
FaserSCT_ClusterizationCfg
(
ConfigFlags
,
DataObjectName
=
"
SCT_RDOs
"
,
checkBadChannels
=
True
))
#
# SpacePoints
...
...
@@ -226,7 +236,8 @@ if useCKF:
#
# Kalman Filter for tracking
from
FaserActsKalmanFilter.CKF2Config
import
CKF2Cfg
acc
.
merge
(
CKF2Cfg
(
ConfigFlags
,
noDiagnostics
=
True
))
if
not
args
.
isOverlay
:
acc
.
merge
(
CKF2Cfg
(
ConfigFlags
,
noDiagnostics
=
True
))
# Add tracking collection with no IFT
acc
.
merge
(
CKF2Cfg
(
ConfigFlags
,
maskedLayers
=
[
0
,
1
,
2
],
name
=
"
CKF_woIFT
"
,
...
...
@@ -246,10 +257,10 @@ itemList = [ "xAOD::EventInfo#*"
,
"
TrackCollection#*
"
]
#
if
useLHC
:
if
useLHC
and
not
args
.
isOverlay
:
itemList
.
extend
(
[
"
xAOD::FaserLHCData#*
"
,
"
xAOD::FaserLHCDataAux#*
"
]
)
if
args
.
isMC
:
if
args
.
isMC
and
not
args
.
isOverlay
:
# Make xAOD versions of truth
from
Reconstruction.xAODTruthCnvAlgConfig
import
xAODTruthCnvAlgCfg
acc
.
merge
(
xAODTruthCnvAlgCfg
(
ConfigFlags
))
...
...
@@ -266,13 +277,14 @@ tagBuilder = CompFactory.EventInfoTagBuilder()
tagBuilder
.
PropagateInput
=
False
acc
.
addEventAlgo
(
tagBuilder
)
# Waveform reconstruction output
from
WaveRecAlgs.WaveRecAlgsConfig
import
WaveformReconstructionOutputCfg
acc
.
merge
(
WaveformReconstructionOutputCfg
(
ConfigFlags
))
if
not
args
.
isOverlay
:
# Waveform reconstruction output
from
WaveRecAlgs.WaveRecAlgsConfig
import
WaveformReconstructionOutputCfg
acc
.
merge
(
WaveformReconstructionOutputCfg
(
ConfigFlags
))
# Calorimeter reconstruction output
from
CaloRecAlgs.CaloRecAlgsConfig
import
CalorimeterReconstructionOutputCfg
acc
.
merge
(
CalorimeterReconstructionOutputCfg
(
ConfigFlags
))
# Calorimeter reconstruction output
from
CaloRecAlgs.CaloRecAlgsConfig
import
CalorimeterReconstructionOutputCfg
acc
.
merge
(
CalorimeterReconstructionOutputCfg
(
ConfigFlags
))
# Check what we have
print
(
"
Writing out xAOD objects:
"
)
...
...
This diff is collapsed.
Click to expand it.
LHCData/LHCDataAlgs/src/LHCDataAlg.cxx
+
58
−
11
View file @
e18e8d3f
...
...
@@ -55,6 +55,10 @@ LHCDataAlg::execute(const EventContext& ctx) const {
lhcDataHandle
->
set_numBunchBeam2
(
m_lhcTool
->
getBeam2Bunches
(
ctx
));
lhcDataHandle
->
set_numBunchColliding
(
m_lhcTool
->
getCollidingBunches
(
ctx
));
ATH_MSG_DEBUG
(
"FaserLHCData B1: "
<<
m_lhcTool
->
getBeam1Bunches
(
ctx
)
<<
" B2: "
<<
m_lhcTool
->
getBeam2Bunches
(
ctx
)
<<
" Coll: "
<<
m_lhcTool
->
getCollidingBunches
(
ctx
));
// Fill BCID information
// Get the BCID mask
...
...
@@ -64,37 +68,68 @@ LHCDataAlg::execute(const EventContext& ctx) const {
SG
::
ReadHandle
<
xAOD
::
EventInfo
>
xevt
(
m_eventInfo
,
ctx
);
unsigned
int
bcid
=
xevt
->
bcid
();
int
nearest
=
findNearest
(
bcid
,
bcid_mask
,
3
);
// Colliding beams
int
nearest
;
if
(
m_lhcTool
->
getCollidingBunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No colliding bunches, can't set nearest"
);
nearest
=
-
3564
;
}
else
{
nearest
=
findNearest
(
bcid
,
bcid_mask
,
3
);
// Colliding beams
}
lhcDataHandle
->
set_distanceToCollidingBCID
(
nearest
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
nearest
<<
" from BCID "
<<
bcid
<<
" to the nearest colliding BCID "
);
nearest
=
findNearest
(
bcid
,
bcid_mask
,
1
);
// Beam1 unpaired
if
(
m_lhcTool
->
getBeam1Bunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No beam 1 bunches, can't set nearest"
);
nearest
=
-
3564
;
}
else
{
nearest
=
findNearest
(
bcid
,
bcid_mask
,
1
);
// Beam1 unpaired
}
lhcDataHandle
->
set_distanceToUnpairedB1
(
nearest
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
nearest
<<
" from BCID "
<<
bcid
<<
" to the nearest unpaired B1 "
);
nearest
=
findNearest
(
bcid
,
bcid_mask
,
2
);
// Beam2 unpaired
if
(
m_lhcTool
->
getBeam2Bunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No beam 2 bunches, can't set nearest"
);
nearest
=
-
3564
;
}
else
{
nearest
=
findNearest
(
bcid
,
bcid_mask
,
2
);
// Beam2 unpaired
}
lhcDataHandle
->
set_distanceToUnpairedB2
(
nearest
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
nearest
<<
" from BCID "
<<
bcid
<<
" to the nearest unpaired B2 "
);
// Add 127 to current BCID to check if inbound B1 is nearby FASER
int
offset_bcid
=
(
bcid
+
127
)
%
3564
;
nearest
=
findNearest
(
offset_bcid
,
bcid_mask
,
1
);
// Inbound B1
int
nearest2
=
findNearest
(
offset_bcid
,
bcid_mask
,
3
);
// Inbound B1
if
(
abs
(
nearest2
)
<
abs
(
nearest
))
nearest
=
nearest2
;
if
(
m_lhcTool
->
getBeam1Bunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No beam 1 bunches, can't set nearest"
);
nearest
=
-
3564
;
}
else
{
int
offset_bcid
=
(
bcid
+
127
)
%
3564
;
nearest
=
findNearest
(
offset_bcid
,
bcid_mask
,
1
);
// Inbound B1
int
nearest2
=
findNearest
(
offset_bcid
,
bcid_mask
,
3
);
// Inbound B1
if
(
abs
(
nearest2
)
<
abs
(
nearest
))
nearest
=
nearest2
;
}
lhcDataHandle
->
set_distanceToInboundB1
(
nearest
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
nearest
<<
" from BCID "
<<
bcid
<<
" to the nearest inbound B1 "
);
unsigned
int
previous
;
previous
=
previousColliding
(
bcid
,
bcid_mask
);
if
(
m_lhcTool
->
getCollidingBunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No colliding bunches, can't set nearest"
);
previous
=
9999
;
}
else
{
previous
=
previousColliding
(
bcid
,
bcid_mask
);
}
lhcDataHandle
->
set_distanceToPreviousColliding
(
previous
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
previous
<<
" from BCID "
<<
bcid
<<
" to the previous colliding bunch "
);
previous
=
previousTrain
(
bcid
,
bcid_mask
);
if
(
m_lhcTool
->
getCollidingBunches
(
ctx
)
==
0
)
{
ATH_MSG_INFO
(
"No colliding bunches, can't set nearest"
);
previous
=
9999
;
}
else
{
previous
=
previousTrain
(
bcid
,
bcid_mask
);
}
lhcDataHandle
->
set_distanceToTrainStart
(
previous
);
ATH_MSG_DEBUG
(
"Found distance of "
<<
previous
<<
" from BCID "
<<
bcid
<<
" to the start of the previous train "
);
...
...
@@ -142,8 +177,20 @@ LHCDataAlg::findNearest(unsigned int bcid, const std::vector<unsigned char>& bci
// If we got to here, there was no match
// Does the BCID make sense?
ATH_MSG_WARNING
(
"Couldn't find distance from BCID "
<<
bcid
<<
" and pattern "
<<
mask
<<
"!"
);
ATH_MSG_WARNING
(
bcid_mask
);
ATH_MSG_WARNING
(
"Couldn't find distance from BCID "
<<
bcid
<<
" and pattern "
<<
int
(
mask
)
<<
"!"
);
int
b1
=
0
;
int
b2
=
0
;
int
col
=
0
;
for
(
int
i
=
0
;
i
<
3564
;
i
++
)
{
if
(
mask
&
0x01
)
b1
++
;
if
(
mask
&
0x02
)
b2
++
;
if
(
mask
&
0x03
)
col
++
;
ATH_MSG_WARNING
(
"BCID "
<<
i
<<
" - "
<<
int
(
bcid_mask
[
i
]));
}
//ATH_MSG_WARNING(bcid_mask);
ATH_MSG_WARNING
(
"Found B1: "
<<
b1
<<
" B2: "
<<
b2
<<
" Coll: "
<<
col
);
return
-
3565
;
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment