Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
athena
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
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
Shaun Roe
athena
Commits
2fad2e6e
Commit
2fad2e6e
authored
6 years ago
by
Shaun Roe
Committed by
Vakhtang Tsulaia
6 years ago
Browse files
Options
Downloads
Patches
Plain Diff
22.0-coverity-iPatTrackFollower
parent
7ef5e368
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Reconstruction/iPat/iPatTrackFollower/src/TrackBuilder.cxx
+17
-16
17 additions, 16 deletions
Reconstruction/iPat/iPatTrackFollower/src/TrackBuilder.cxx
Reconstruction/iPat/iPatTrackFollower/src/TrackFollower.cxx
+55
-67
55 additions, 67 deletions
Reconstruction/iPat/iPatTrackFollower/src/TrackFollower.cxx
with
72 additions
and
83 deletions
Reconstruction/iPat/iPatTrackFollower/src/TrackBuilder.cxx
+
17
−
16
View file @
2fad2e6e
...
...
@@ -15,6 +15,14 @@
#include
"iPatTrack/Track.h"
#include
"iPatTrackFollower/TrackBuilder.h"
namespace
{
template
<
class
ContainerPtr
>
void
deleteContainedPointers
(
ContainerPtr
*
c
){
for
(
auto
&
p
:*
c
)
delete
p
;
return
;
}
}
//<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>>
TrackBuilder
::
TrackBuilder
(
const
std
::
string
&
type
,
...
...
@@ -85,8 +93,8 @@ TrackBuilder::trackFromHits (TrackStatus status,
hits
->
begin
(),
hits
->
end
()))
{
for
(
std
::
list
<
HitOnTrack
*>::
const_iterator
h
=
hits
->
begin
();
h
!=
hits
->
end
();
++
h
)
delete
*
h
;
deleteContainedPointers
(
hits
);
delete
hits
;
delete
hitQuality
;
ATH_MSG_DEBUG
(
"trackFromHits: FAIL with insufficient hits"
);
...
...
@@ -172,19 +180,16 @@ TrackBuilder::trackFromHits (TrackStatus status,
else
{
delete
hitQuality
;
for
(
std
::
list
<
HitOnTrack
*>::
const_iterator
h
=
hits
->
begin
();
h
!=
hits
->
end
();
++
h
)
delete
*
h
;
deleteContainedPointers
(
hits
);
hits
->
clear
();
delete
hits
;
delete
fitQuality
;
delete
perigeeParameters
;
if
(
scattererParameters
)
{
for
(
parameter_iterator
s
=
scattererParameters
->
begin
();
s
!=
scattererParameters
->
end
();
++
s
)
delete
*
s
;
delete
scattererParameters
;
deleteContainedPointers
(
scattererParameters
);
delete
scattererParameters
;
}
ATH_MSG_DEBUG
(
"trackFromHitsFAIL with bad fit quality"
);
return
0
;
...
...
@@ -223,7 +228,7 @@ TrackBuilder::trackRefit (const Track& track) const
hits
->
begin
(),
hits
->
end
());
if
(
m_trackQuality
->
goodTrack
(
track
.
status
(),
*
fitQuality
,
*
hitQuality
))
if
(
scattererParameters
and
m_trackQuality
->
goodTrack
(
track
.
status
(),
*
fitQuality
,
*
hitQuality
))
{
builtTrack
=
new
Track
(
track
.
status
(),
hits
,
...
...
@@ -239,18 +244,14 @@ TrackBuilder::trackRefit (const Track& track) const
{
// TODO: the plan is to build last-layers SCT + trt secondary tracks here
delete
hitQuality
;
for
(
std
::
list
<
HitOnTrack
*>::
const_iterator
h
=
hits
->
begin
();
h
!=
hits
->
end
();
++
h
)
delete
*
h
;
deleteContainedPointers
(
hits
);
hits
->
clear
();
delete
hits
;
delete
fitQuality
;
delete
perigeeParameters
;
if
(
scattererParameters
)
{
for
(
parameter_iterator
s
=
scattererParameters
->
begin
();
s
!=
scattererParameters
->
end
();
++
s
)
delete
*
s
;
deleteContainedPointers
(
scattererParameters
);
delete
scattererParameters
;
}
ATH_MSG_DEBUG
(
"trackRefit: FAIL with bad fit quality"
);
...
...
This diff is collapsed.
Click to expand it.
Reconstruction/iPat/iPatTrackFollower/src/TrackFollower.cxx
+
55
−
67
View file @
2fad2e6e
...
...
@@ -30,6 +30,7 @@
#include
"iPatTrackFollower/LayerPredictor.h"
#include
"iPatTrackFollower/SiliconClusterMap.h"
#include
"iPatTrackFollower/TrackFollower.h"
#include
<memory>
//<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>>
...
...
@@ -343,78 +344,65 @@ TrackFollower::extrapolate_inwards (const Track& track)
// associate and build track for hits in one extrapolated layer at a time (expensive!)
std
::
vector
<
SiliconLayer
*>::
iterator
end
=
begin
;
Track
*
extrapolatedTrack
=
0
;
Track
*
newTrack
=
0
;
std
::
unique_ptr
<
Track
>
extrapolatedTrack
{}
;
std
::
unique_ptr
<
Track
>
newTrack
{}
;
TrackStatus
status
=
track
.
status
();
hit_citerator
hitBegin
=
track
.
hit_list_begin
();
hit_citerator
hitEnd
=
track
.
hit_list_end
();
do
{
// move begin backwards to the preceding active layer.
// Include any leading material by going back again until
// an active layer is found and then go forwards one
while
(
begin
!=
layers
->
begin
()
&&
(
**
(
--
begin
)).
isInactive
())
;
while
(
begin
!=
layers
->
begin
()
&&
(
**
(
--
begin
)).
isInactive
())
;
if
(
begin
!=
layers
->
begin
())
++
begin
;
if
(
begin
==
layers
->
begin
())
{
switch
(
status
)
{
case
truncated
:
status
=
truncated
;
break
;
case
segment
:
case
long_segment
:
case
pendingTRT
:
status
=
pendingTRT
;
break
;
case
secondary
:
case
primary
:
status
=
primary
;
break
;
default:
ATH_MSG_WARNING
(
" unexpected Track::extrapolate_inwards "
);
delete
layers
;
return
0
;
};
}
hit_list
*
hits
=
associateSilicon
(
begin
,
end
,
false
,
track
);
end
=
begin
;
for
(
hit_citerator
h
=
hitBegin
;
h
!=
hitEnd
;
++
h
)
hits
->
push_back
(
new
HitOnTrack
(
**
h
));
newTrack
=
m_trackBuilder
->
trackFromHits
(
status
,
hits
,
track
);
if
(
newTrack
)
{
// keep newTrack provided it adds cluster(s)
bool
haveCluster
=
false
;
for
(
hit_citerator
h
=
newTrack
->
hit_list_begin
();
h
!=
newTrack
->
hit_list_end
();
++
h
)
{
if
((
**
h
).
isCluster
())
haveCluster
=
true
;
if
((
**
h
).
status
()
!=
scatterer
)
continue
;
if
(
haveCluster
)
{
delete
extrapolatedTrack
;
extrapolatedTrack
=
newTrack
;
hitBegin
=
newTrack
->
hit_list_begin
();
hitEnd
=
newTrack
->
hit_list_end
();
}
else
{
delete
newTrack
;
newTrack
=
0
;
}
break
;
}
}
do
{
// move begin backwards to the preceding active layer.
// Include any leading material by going back again until
// an active layer is found and then go forwards one
while
(
begin
!=
layers
->
begin
()
&&
(
**
(
--
begin
)).
isInactive
())
;
while
(
begin
!=
layers
->
begin
()
&&
(
**
(
--
begin
)).
isInactive
())
;
if
(
begin
!=
layers
->
begin
())
++
begin
;
if
(
begin
==
layers
->
begin
()){
switch
(
status
){
case
truncated
:
status
=
truncated
;
break
;
case
segment
:
case
long_segment
:
case
pendingTRT
:
status
=
pendingTRT
;
break
;
case
secondary
:
case
primary
:
status
=
primary
;
break
;
default:
ATH_MSG_WARNING
(
" unexpected Track::extrapolate_inwards "
);
delete
layers
;
return
0
;
};
}
hit_list
*
hits
=
associateSilicon
(
begin
,
end
,
false
,
track
);
end
=
begin
;
for
(
hit_citerator
h
=
hitBegin
;
h
!=
hitEnd
;
++
h
)
hits
->
push_back
(
new
HitOnTrack
(
**
h
));
//
newTrack
.
reset
(
m_trackBuilder
->
trackFromHits
(
status
,
hits
,
track
));
if
(
newTrack
)
{
// keep newTrack provided it adds cluster(s)
bool
haveCluster
=
false
;
for
(
hit_citerator
h
=
newTrack
->
hit_list_begin
();
h
!=
newTrack
->
hit_list_end
();
++
h
){
if
((
**
h
).
isCluster
())
haveCluster
=
true
;
if
((
**
h
).
status
()
!=
scatterer
)
continue
;
if
(
haveCluster
){
extrapolatedTrack
=
std
::
move
(
newTrack
);
hitBegin
=
newTrack
->
hit_list_begin
();
hitEnd
=
newTrack
->
hit_list_end
();
}
else
{
newTrack
.
reset
();
}
break
;
}
}
}
while
(
newTrack
&&
begin
!=
layers
->
begin
());
//
delete
layers
;
return
extrapolatedTrack
;
return
extrapolatedTrack
.
release
()
;
}
Track
*
...
...
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