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 cschalodata_token_ = consumes<CSCHaloData>(IT_CSCHaloData);
51 ecalhalodata_token_ = consumes<EcalHaloData>(IT_EcalHaloData);
52 hcalhalodata_token_ = consumes<HcalHaloData>(IT_HcalHaloData);
53 globalhalodata_token_ = consumes<GlobalHaloData>(IT_GlobalHaloData);
55 produces<BeamHaloSummary>();
61 std::auto_ptr<BeamHaloSummary> TheBeamHaloSummary(
new BeamHaloSummary() );
66 iEvent.
getByToken(cschalodata_token_, TheCSCHaloData);
76 TheBeamHaloSummary->GetCSCHaloReport()[0] = 1;
85 TheBeamHaloSummary->GetCSCHaloReport()[1] = 1;
89 TheBeamHaloSummary->GetCSCHaloReport()[2] = 1;
95 TheBeamHaloSummary->GetCSCHaloReport()[3] = 1;
101 iEvent.
getByToken(ecalhalodata_token_, TheEcalHaloData);
105 bool EcalLooseId =
false, EcalTightId =
false;
148 float angle = vm_Angle[cluster];
149 float roundness = vm_Roundness[cluster];
152 if( (angle > 0. && angle < L_EcalShowerShapesAngle ) && ( roundness > 0. && roundness < L_EcalShowerShapesRoundness ) )
154 if( cluster->energy() > L_EcalSuperClusterEnergy && cluster->size() > (
unsigned int) L_EcalSuperClusterSize )
159 if( (angle > 0. && angle < T_EcalShowerShapesAngle ) && ( roundness > 0. && roundness < T_EcalShowerShapesRoundness ) )
161 if( cluster->energy() > T_EcalSuperClusterEnergy && cluster->size() > (
unsigned int)T_EcalSuperClusterSize )
167 TheBeamHaloSummary->GetEcalHaloReport()[0] = 1;
169 TheBeamHaloSummary->GetEcalHaloReport()[1] = 1;
174 iEvent.
getByToken(hcalhalodata_token_, TheHcalHaloData);
177 const std::vector<PhiWedge> HcalWedges = HcalData.
GetPhiWedges();
178 bool HcalLooseId =
false, HcalTightId =
false;
179 for( std::vector<PhiWedge>::const_iterator iWedge = HcalWedges.begin() ; iWedge != HcalWedges.end() ; iWedge++ )
181 bool HcaliPhi =
false;
183 if( iWedge-> Energy() > L_HcalPhiWedgeEnergy && iWedge->NumberOfConstituents() > L_HcalPhiWedgeConstituents &&
std::abs(iWedge->ZDirectionConfidence()) > L_HcalPhiWedgeConfidence)
190 if( iWedge-> Energy() > T_HcalPhiWedgeEnergy && iWedge->NumberOfConstituents() > T_HcalPhiWedgeConstituents &&
std::abs(iWedge->ZDirectionConfidence()) > T_HcalPhiWedgeConfidence)
196 for(
unsigned int i = 0 ;
i < TheBeamHaloSummary->GetHcaliPhiSuspects().size() ;
i++ )
198 if( iWedge->iPhi() == TheBeamHaloSummary->GetHcaliPhiSuspects()[
i] )
205 TheBeamHaloSummary->GetHcaliPhiSuspects().push_back( iWedge->iPhi() ) ;
209 TheBeamHaloSummary->GetHcalHaloReport()[0] = 1;
211 TheBeamHaloSummary->GetHcalHaloReport()[1] = 1;
216 iEvent.
getByToken(globalhalodata_token_, TheGlobalHaloData);
218 bool GlobalLooseId =
false;
219 bool GlobalTightId =
false;
225 if( MatchedEcalWedges.size() || MatchedHcalWedges.size() )
226 GlobalLooseId =
true;
229 for( std::vector<PhiWedge>::const_iterator iWedge = MatchedEcalWedges.begin() ; iWedge != MatchedEcalWedges.end(); iWedge ++ )
231 if( iWedge->NumberOfConstituents() > T_EcalPhiWedgeConstituents )
232 GlobalTightId =
true;
233 if(
std::abs(iWedge->ZDirectionConfidence() > T_EcalPhiWedgeConfidence) )
234 GlobalTightId =
true;
237 for( std::vector<PhiWedge>::const_iterator iWedge = MatchedHcalWedges.begin() ; iWedge != MatchedHcalWedges.end(); iWedge ++ )
239 if( iWedge->NumberOfConstituents() > T_HcalPhiWedgeConstituents )
240 GlobalTightId =
true;
241 if(
std::abs(iWedge->ZDirectionConfidence()) > T_HcalPhiWedgeConfidence )
242 GlobalTightId =
true;
246 TheBeamHaloSummary->GetGlobalHaloReport()[0] = 1;
248 TheBeamHaloSummary->GetGlobalHaloReport()[1] = 1;
250 iEvent.
put(TheBeamHaloSummary);
254 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
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
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
short int NTracksSmalldT() const
Abs< T >::type abs(const T &t)
short int NOutOfTimeHits() const
int NumberOfHaloTriggers(HaloData::Endcap z=HaloData::both) const
T const * product() const
std::vector< PhiWedge > & GetMatchedHcalPhiWedges()
size_type size() const
Size of the RefVector.
const std::vector< PhiWedge > & GetPhiWedges() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)