22 L_EcalPhiWedgeEnergy = (float) iConfig.
getParameter<
double>(
"l_EcalPhiWedgeEnergy");
23 L_EcalPhiWedgeConstituents = iConfig.
getParameter<
int>(
"l_EcalPhiWedgeConstituents");
24 L_EcalPhiWedgeToF = (float)iConfig.
getParameter<
double>(
"l_EcalPhiWedgeToF");
25 L_EcalPhiWedgeConfidence = (float)iConfig.
getParameter<
double>(
"l_EcalPhiWedgeConfidence");
26 L_EcalShowerShapesRoundness = (float)iConfig.
getParameter<
double>(
"l_EcalShowerShapesRoundness");
27 L_EcalShowerShapesAngle =(float) iConfig.
getParameter<
double>(
"l_EcalShowerShapesAngle");
28 L_EcalSuperClusterSize = (int) iConfig.
getParameter<
int>(
"l_EcalSuperClusterSize");
29 L_EcalSuperClusterEnergy = (float) iConfig.
getParameter<
double>(
"l_EcalSuperClusterEnergy");
31 T_EcalPhiWedgeEnergy = (float)iConfig.
getParameter<
double>(
"t_EcalPhiWedgeEnergy");
32 T_EcalPhiWedgeConstituents = iConfig.
getParameter<
int>(
"t_EcalPhiWedgeConstituents");
33 T_EcalPhiWedgeToF = (float)iConfig.
getParameter<
double>(
"t_EcalPhiWedgeToF");
34 T_EcalPhiWedgeConfidence = (float)iConfig.
getParameter<
double>(
"t_EcalPhiWedgeConfidence");
35 T_EcalShowerShapesRoundness = (float)iConfig.
getParameter<
double>(
"t_EcalShowerShapesRoundness");
36 T_EcalShowerShapesAngle = (float)iConfig.
getParameter<
double>(
"t_EcalShowerShapesAngle");
37 T_EcalSuperClusterSize = (int) iConfig.
getParameter<
int>(
"t_EcalSuperClusterSize");
38 T_EcalSuperClusterEnergy = (float) iConfig.
getParameter<
double>(
"t_EcalSuperClusterEnergy");
40 L_HcalPhiWedgeEnergy = (float)iConfig.
getParameter<
double>(
"l_HcalPhiWedgeEnergy");
41 L_HcalPhiWedgeConstituents = iConfig.
getParameter<
int>(
"l_HcalPhiWedgeConstituents");
42 L_HcalPhiWedgeToF = (float)iConfig.
getParameter<
double>(
"l_HcalPhiWedgeToF");
43 L_HcalPhiWedgeConfidence = (float)iConfig.
getParameter<
double>(
"l_HcalPhiWedgeConfidence");
45 T_HcalPhiWedgeEnergy = (float)iConfig.
getParameter<
double>(
"t_HcalPhiWedgeEnergy");
46 T_HcalPhiWedgeConstituents = iConfig.
getParameter<
int>(
"t_HcalPhiWedgeConstituents");
47 T_HcalPhiWedgeToF = (float)iConfig.
getParameter<
double>(
"t_HcalPhiWedgeToF");
48 T_HcalPhiWedgeConfidence = (float)iConfig.
getParameter<
double>(
"t_HcalPhiWedgeConfidence");
50 problematicStripMinLength = (int)iConfig.
getParameter<
int>(
"problematicStripMinLength");
52 cschalodata_token_ = consumes<CSCHaloData>(IT_CSCHaloData);
53 ecalhalodata_token_ = consumes<EcalHaloData>(IT_EcalHaloData);
54 hcalhalodata_token_ = consumes<HcalHaloData>(IT_HcalHaloData);
55 globalhalodata_token_ = consumes<GlobalHaloData>(IT_GlobalHaloData);
57 produces<BeamHaloSummary>();
63 std::auto_ptr<BeamHaloSummary> TheBeamHaloSummary(
new BeamHaloSummary() );
68 iEvent.
getByToken(cschalodata_token_, TheCSCHaloData);
78 TheBeamHaloSummary->GetCSCHaloReport()[0] = 1;
87 TheBeamHaloSummary->GetCSCHaloReport()[1] = 1;
91 TheBeamHaloSummary->GetCSCHaloReport()[2] = 1;
97 TheBeamHaloSummary->GetCSCHaloReport()[3] = 1;
106 TheBeamHaloSummary->GetCSCHaloReport()[4] = 1;
113 TheBeamHaloSummary->GetCSCHaloReport()[5] = 1;
120 iEvent.
getByToken(ecalhalodata_token_, TheEcalHaloData);
124 bool EcalLooseId =
false, EcalTightId =
false;
167 float angle = vm_Angle[cluster];
168 float roundness = vm_Roundness[cluster];
171 if( (angle > 0. && angle < L_EcalShowerShapesAngle ) && ( roundness > 0. && roundness < L_EcalShowerShapesRoundness ) )
173 if( cluster->energy() > L_EcalSuperClusterEnergy && cluster->size() > (
unsigned int) L_EcalSuperClusterSize )
178 if( (angle > 0. && angle < T_EcalShowerShapesAngle ) && ( roundness > 0. && roundness < T_EcalShowerShapesRoundness ) )
180 if( cluster->energy() > T_EcalSuperClusterEnergy && cluster->size() > (
unsigned int)T_EcalSuperClusterSize )
186 TheBeamHaloSummary->GetEcalHaloReport()[0] = 1;
188 TheBeamHaloSummary->GetEcalHaloReport()[1] = 1;
193 iEvent.
getByToken(hcalhalodata_token_, TheHcalHaloData);
196 const std::vector<PhiWedge> HcalWedges = HcalData.
GetPhiWedges();
197 bool HcalLooseId =
false, HcalTightId =
false;
198 for( std::vector<PhiWedge>::const_iterator iWedge = HcalWedges.begin() ; iWedge != HcalWedges.end() ; iWedge++ )
200 bool HcaliPhi =
false;
202 if( iWedge-> Energy() > L_HcalPhiWedgeEnergy && iWedge->NumberOfConstituents() > L_HcalPhiWedgeConstituents &&
std::abs(iWedge->ZDirectionConfidence()) > L_HcalPhiWedgeConfidence)
209 if( iWedge-> Energy() > T_HcalPhiWedgeEnergy && iWedge->NumberOfConstituents() > T_HcalPhiWedgeConstituents &&
std::abs(iWedge->ZDirectionConfidence()) > T_HcalPhiWedgeConfidence)
215 for(
unsigned int i = 0 ;
i < TheBeamHaloSummary->GetHcaliPhiSuspects().size() ;
i++ )
217 if( iWedge->iPhi() == TheBeamHaloSummary->GetHcaliPhiSuspects()[
i] )
224 TheBeamHaloSummary->GetHcaliPhiSuspects().push_back( iWedge->iPhi() ) ;
228 TheBeamHaloSummary->GetHcalHaloReport()[0] = 1;
230 TheBeamHaloSummary->GetHcalHaloReport()[1] = 1;
235 if(problematicStrip.cellTowerIds.size() < (
unsigned int)problematicStripMinLength)
continue;
237 TheBeamHaloSummary->getProblematicStrips().push_back(problematicStrip);
244 iEvent.
getByToken(globalhalodata_token_, TheGlobalHaloData);
246 bool GlobalLooseId =
false;
247 bool GlobalTightId =
false;
253 if( MatchedEcalWedges.size() || MatchedHcalWedges.size() )
254 GlobalLooseId =
true;
257 for( std::vector<PhiWedge>::const_iterator iWedge = MatchedEcalWedges.begin() ; iWedge != MatchedEcalWedges.end(); iWedge ++ )
259 if( iWedge->NumberOfConstituents() > T_EcalPhiWedgeConstituents )
260 GlobalTightId =
true;
261 if(
std::abs(iWedge->ZDirectionConfidence() > T_EcalPhiWedgeConfidence) )
262 GlobalTightId =
true;
265 for( std::vector<PhiWedge>::const_iterator iWedge = MatchedHcalWedges.begin() ; iWedge != MatchedHcalWedges.end(); iWedge ++ )
267 if( iWedge->NumberOfConstituents() > T_HcalPhiWedgeConstituents )
268 GlobalTightId =
true;
269 if(
std::abs(iWedge->ZDirectionConfidence()) > T_HcalPhiWedgeConfidence )
270 GlobalTightId =
true;
274 TheBeamHaloSummary->GetGlobalHaloReport()[0] = 1;
276 TheBeamHaloSummary->GetGlobalHaloReport()[1] = 1;
278 iEvent.
put(TheBeamHaloSummary);
282 BeamHaloSummaryProducer::~BeamHaloSummaryProducer(){}
T getParameter(std::string const &) const
int NumberOfHaloTracks(HaloData::Endcap z=HaloData::both) const
edm::ValueMap< float > & GetShowerShapesRoundness()
bool getByToken(EDGetToken token, Handle< PROD > &result) const
short int NFlatHaloSegments_TrkMuUnVeto() const
edm::RefVector< reco::SuperClusterCollection > & GetSuperClusters()
edm::ValueMap< float > & GetShowerShapesAngle()
short int NumberOfOutOfTimeTriggers(HaloData::Endcap z=HaloData::both) const
std::vector< PhiWedge > & GetMatchedEcalPhiWedges()
short int NFlatHaloSegments() const
bool GetSegmentsInBothEndcaps() const
int NumberOfHaloTriggers_TrkMuUnVeto(HaloData::Endcap z=HaloData::both) const
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
short int NTracksSmalldT() const
bool GetSegmentIsCaloMatched() const
Abs< T >::type abs(const T &t)
bool GetSegmentsInBothEndcaps_Loose_dTcut_TrkMuUnVeto() const
short int NOutOfTimeHits() const
int NumberOfHaloTriggers(HaloData::Endcap z=HaloData::both) const
T const * product() const
std::vector< PhiWedge > & GetMatchedHcalPhiWedges()
const std::vector< HaloTowerStrip > & getProblematicStrips() const
size_type size() const
Size of the RefVector.
const std::vector< PhiWedge > & GetPhiWedges() const
bool GetSegmentsInBothEndcaps_Loose_TrkMuUnVeto() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)