Skip to content
Snippets Groups Projects
Commit e6a0583f authored by FU Chengdong's avatar FU Chengdong
Browse files

fix bug on only pixel or strip FTD hits exist

parent 3df38359
No related branches found
No related tags found
No related merge requests found
<lccdd> <lccdd>
<define> <define>
<constant name="SET_inner_radius" value="OuterTracker_outer_radius + env_safety"/> <!--0.17mm silicon + 1.0mm carbon -> 0.65% of X0-->
<constant name="SET_outer_radius" value="Ecal_barrel_inner_radius - env_safety "/> <constant name="SET_sensitive_thickness" value="0.17*mm"/>
<constant name="SET_half_length" value="DC_half_length"/> <constant name="SET_support_thickness" value="1.0*mm"/>
<constant name="SET_ladder_number" value="24"/>
<constant name="SET_outer_radius" value="(SET_inner_radius+SET_sensitive_thickness*2+SET_support_thickness*2)/cos(pi/SET_ladder_number) + env_safety"/>
<constant name="SET_half_length" value="OuterTracker_half_length"/>
<constant name="SET_distance_from_tpc" value="SET_inner_radius-OuterTracker_outer_radius+0.5*SET_sensitive_thickness"/>
</define> </define>
<detectors> <detectors>
<detector id="DetID_SET" name="SET" type="SET_Simple_Planar" vis="SETVis" readout="SETCollection" insideTrackingVolume="true"> <detector id="DetID_SET" name="SET" type="SET_Simple_Planar" vis="SETVis" readout="SETCollection" insideTrackingVolume="true">
<envelope vis="SETVis"> <envelope>
<shape type="Tube" rmin="SET_inner_radius" rmax="SET_outer_radius" dz="SET_half_length" material = "Air" /> <shape type="Tube" rmin="SET_inner_radius" rmax="SET_outer_radius" dz="SET_half_length" material = "Air" />
</envelope> </envelope>
<type_flags type="DetType_TRACKER + DetType_BARREL + DetType_STRIP "/> <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_STRIP "/>
<!-- database : set_simple_planar_sensors_01 -->
<!-- SQL command: "select * from extended_reconstruction_parameters;" -->
<reconstruction strip_width="0.0125*mm" strip_length="92*mm" strip_pitch="0.05*mm" strip_angle="7*deg" /> <reconstruction strip_width="0.0125*mm" strip_length="92*mm" strip_pitch="0.05*mm" strip_angle="7*deg" />
<!-- SQL command: "select * from global;" --> <global sensitive_thickness="SET_sensitive_thickness" support_thickness="SET_support_thickness" sensor_length="92*mm" sensitive_mat="G4_Si"
<global sensitive_thickness="0.2*mm" support_thickness="1*mm" sensor_length="92*mm" sensitive_mat="G4_Si"
support_mat="G4_C" sensitive_threshold_KeV="64*keV" /> support_mat="G4_C" sensitive_threshold_KeV="64*keV" />
<!-- SQL command: "select * from set_layers;" --> <layer layer_id="0" sensitive_distance_from_tpc="SET_distance_from_tpc" coverage_of_TPC_Ecal_Hcal_barrel="1.0"
n_ladders="SET_ladder_number" ladder_clearance="0.1*mm" faces_IP="1" />
<layer layer_id="0" sensitive_distance_from_tpc="3*mm" coverage_of_TPC_Ecal_Hcal_barrel="0.98" <layer layer_id="1" sensitive_distance_from_tpc="SET_distance_from_tpc+SET_support_thickness*2+SET_sensitive_thickness" coverage_of_TPC_Ecal_Hcal_barrel="1.0"
n_ladders="24" ladder_clearance="0.1*mm" faces_IP="1" /> n_ladders="SET_ladder_number" ladder_clearance="0.1*mm" faces_IP="0" />
<layer layer_id="1" sensitive_distance_from_tpc="5.5*mm" coverage_of_TPC_Ecal_Hcal_barrel="0.98"
n_ladders="24" ladder_clearance="0.1*mm" faces_IP="0" />
</detector> </detector>
......
<lccdd> <lccdd>
<define> <define>
<constant name="SIT_sensitive_thickness" value="0.2*mm"/> <!--0.17mm silicon + 1.0mm carbon -> 0.65% of X0-->
<constant name="SIT_inner_radius" value="SIT1_inner_radius"/> <constant name="SIT_sensitive_thickness" value="0.17*mm"/>
<constant name="SIT_support_thickness" value="1*mm"/>
<constant name="SIT_sensor_length" value="92*mm"/>
<!--constant name="SIT_inner_radius" value="SIT1_inner_radius"/>
<constant name="SIT_inner_radius_1" value="SIT_inner_radius + env_safety"/> <constant name="SIT_inner_radius_1" value="SIT_inner_radius + env_safety"/>
<constant name="SIT_outer_radius_1" value="SIT_inner_radius_1/cos(pi/8)"/> <constant name="SIT_outer_radius_1" value="SIT_inner_radius_1/cos(pi/8)"/>
<constant name="SIT_inner_radius_2" value="SIT2_inner_radius"/> <constant name="SIT_inner_radius_2" value="SIT2_inner_radius"/>
<constant name="SIT_outer_radius" value="OuterTracker_inner_radius"/> <constant name="SIT_outer_radius" value="OuterTracker_inner_radius"/>
<constant name="SIT_half_length" value="SIT2_half_length"/> <constant name="SIT_half_length" value="SIT2_half_length"/>
<constant name="SIT_half_length_1" value="SIT1_half_length"/> <constant name="SIT_half_length_1" value="SIT1_half_length"/>
<constant name="SIT_layer_gap" value="2.5*mm"/> <constant name="SIT_layer_gap" value="2.5*mm"/-->
</define> </define>
<detectors> <detectors>
<detector id="DetID_SIT" name="SIT" type="SIT_Simple_Planar" vis="SITVis" readout="SITCollection" insideTrackingVolume="true"> <detector id="DetID_SIT" name="SIT" type="SIT_Simple_Pixel" vis="SITVis" readout="SITCollection" insideTrackingVolume="true">
<envelope vis="SeeThrough"> <envelope>
<shape type="BooleanShape" operation="Union" material="Air" > <shape type="Assembly"/>
<!--shape type="BooleanShape" operation="Union" material="Air" >
<shape type="Tube" rmin="SIT_inner_radius" rmax="SIT_outer_radius_1" dz="SIT_half_length_1" /> <shape type="Tube" rmin="SIT_inner_radius" rmax="SIT_outer_radius_1" dz="SIT_half_length_1" />
<shape type="Tube" rmin="SIT_inner_radius_2" rmax="SIT_outer_radius" dz="SIT_half_length" /> <shape type="Tube" rmin="SIT_inner_radius_2" rmax="SIT_outer_radius" dz="SIT_half_length" />
</shape> </shape-->
</envelope> </envelope>
<type_flags type="DetType_TRACKER + DetType_BARREL + DetType_STRIP "/> <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_PIXEL "/>
<!-- database : sit_simple_planar_sensors_03 -->
<!-- SQL command: "select * from extended_reconstruction_parameters;" -->
<reconstruction strip_width="0." strip_length="92*mm" strip_pitch="0." strip_angle="0*deg" /> <reconstruction strip_width="0." strip_length="92*mm" strip_pitch="0." strip_angle="0*deg" />
<!-- SQL command: "select * from global;" --> <global sensitive_thickness="SIT_sensitive_thickness" support_thickness="SIT_support_thickness" sensor_length="SIT_sensor_length"
<global sensitive_thickness="SIT_sensitive_thickness" support_thickness="1*mm" sensor_length="92*mm"
sensitive_mat="G4_Si" support_mat="G4_C" sensitive_threshold_KeV="64*keV" /> sensitive_mat="G4_Si" support_mat="G4_C" sensitive_threshold_KeV="64*keV" />
<display ladder="SeeThrough" support="SITSupportVis" sens_env="SeeThrough" sens="SITSensitiveVis" />
<!-- SQL command: "select * from sit_layers;" --> <layer layer_id="0" sensitive_radius="SIT1_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT1_half_length*2/SIT_sensor_length"
<layer layer_id="0" sensitive_radius="SIT_inner_radius_1+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="8" n_ladders="10" n_ladders="2*pi*SIT1_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="1" is_SIT2="0" />
ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="1" is_SIT2="0" /> <layer layer_id="1" sensitive_radius="SIT2_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT2_half_length*2/SIT_sensor_length"
n_ladders="2*pi*SIT2_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="1" />
<layer layer_id="2" sensitive_radius="SIT3_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT3_half_length*2/SIT_sensor_length"
n_ladders="2*pi*SIT3_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="0" />
<layer layer_id="3" sensitive_radius="SIT4_inner_radius+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="SIT4_half_length*2/SIT_sensor_length"
n_ladders="2*pi*SIT4_inner_radius/SIT_sensor_length" ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="0" />
<layer layer_id="1" sensitive_radius="SIT_inner_radius_2+0.5*SIT_sensitive_thickness" n_sensors_per_ladder="48" n_ladders="16"
ladder_clearance="0.1*mm" faces_IP="1" is_SIT1="0" is_SIT2="1" />
</detector> </detector>
</detectors> </detectors>
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "EventSeeder/IEventSeeder.h" #include "EventSeeder/IEventSeeder.h"
#include "TrackSystemSvc/ITrackSystemSvc.h" #include "TrackSystemSvc/ITrackSystemSvc.h"
#include "DataHelper/Navigation.h" #include "DataHelper/Navigation.h"
#include "DataHelper/TrackerHitHelper.h"
#include "edm4hep/MCParticle.h" #include "edm4hep/MCParticle.h"
#include "edm4hep/TrackerHit.h" #include "edm4hep/TrackerHit.h"
//#include "edm4hep/TrackerHitPlane.h" //#include "edm4hep/TrackerHitPlane.h"
...@@ -420,7 +421,7 @@ int SiliconTrackingAlg::InitialiseFTD() { ...@@ -420,7 +421,7 @@ int SiliconTrackingAlg::InitialiseFTD() {
} }
catch ( GaudiException &e ) { catch ( GaudiException &e ) {
debug() << "Collection " << _inFTDPixelColHdl.fullKey() << " is unavailable in event " << _nEvt << endmsg; debug() << "Collection " << _inFTDPixelColHdl.fullKey() << " is unavailable in event " << _nEvt << endmsg;
success = 0; //success = 0;
} }
if(hitFTDPixelCol){ if(hitFTDPixelCol){
...@@ -520,7 +521,7 @@ int SiliconTrackingAlg::InitialiseFTD() { ...@@ -520,7 +521,7 @@ int SiliconTrackingAlg::InitialiseFTD() {
} }
catch ( GaudiException &e ) { catch ( GaudiException &e ) {
debug() << "Collection " << _inFTDSpacePointColHdl.fullKey() << " is unavailable in event " << _nEvt << endmsg; debug() << "Collection " << _inFTDSpacePointColHdl.fullKey() << " is unavailable in event " << _nEvt << endmsg;
success = 0; //success = 0;
} }
const edm4hep::TrackerHitCollection* rawHitCol = nullptr; const edm4hep::TrackerHitCollection* rawHitCol = nullptr;
...@@ -626,6 +627,8 @@ int SiliconTrackingAlg::InitialiseFTD() { ...@@ -626,6 +627,8 @@ int SiliconTrackingAlg::InitialiseFTD() {
} }
} }
if(hitFTDPixelCol==nullptr&&hitFTDSpacePointCol==nullptr) success = 0;
debug() << "FTD initialized" << endmsg; debug() << "FTD initialized" << endmsg;
return success; return success;
} }
...@@ -771,7 +774,6 @@ int SiliconTrackingAlg::InitialiseVTX() { ...@@ -771,7 +774,6 @@ int SiliconTrackingAlg::InitialiseVTX() {
// v) Must be standard TrackerHit // v) Must be standard TrackerHit
//const edm4hep::ConstTrackerHit trkhit = hitSITCol->at(ielem); //const edm4hep::ConstTrackerHit trkhit = hitSITCol->at(ielem);
int layer = getLayerID(trkhit); int layer = getLayerID(trkhit);
// VXD and SIT are treated as one system so SIT layers start from _nLayersVTX // VXD and SIT are treated as one system so SIT layers start from _nLayersVTX
...@@ -2671,7 +2673,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { ...@@ -2671,7 +2673,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) {
// check if the hit has been rejected as being on the same layer and further from the helix lh==0 // check if the hit has been rejected as being on the same layer and further from the helix lh==0
if (lh[i] == 1) { if (lh[i] == 1) {
edm4hep::ConstTrackerHit trkHit = hitVec[i]->getTrackerHit(); edm4hep::ConstTrackerHit trkHit = hitVec[i]->getTrackerHit();
debug() << "TrackerHit " << i << " address = " << trkHit << endmsg; debug() << "TrackerHit " << i << " id = " << trkHit.id() << endmsg;
nFit++; nFit++;
if(trkHit.isAvailable()) { if(trkHit.isAvailable()) {
trkHits.push_back(trkHit); trkHits.push_back(trkHit);
...@@ -2791,7 +2793,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) { ...@@ -2791,7 +2793,7 @@ void SiliconTrackingAlg::FinalRefit(edm4hep::TrackCollection* trk_col) {
marlinTrk->getHitsInFit(hits_in_fit); marlinTrk->getHitsInFit(hits_in_fit);
for ( unsigned ihit = 0; ihit < hits_in_fit.size(); ++ihit) { for ( unsigned ihit = 0; ihit < hits_in_fit.size(); ++ihit) {
debug() << "Hit address=" << hits_in_fit[ihit].first << endmsg; debug() << "Hit id =" << hits_in_fit[ihit].first.id() << endmsg;
edm4hep::ConstTrackerHit trk = hits_in_fit[ihit].first; edm4hep::ConstTrackerHit trk = hits_in_fit[ihit].first;
all_hits.push_back(trk);//hits_in_fit[ihit].first); all_hits.push_back(trk);//hits_in_fit[ihit].first);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment