46 #include "HepMC/GenEvent.h"
47 #include "HepMC/GenParticle.h"
72 virtual void endJob() ;
137 produces<reco::EvtPlaneCollection>(
"recoLevel");
160 using namespace reco;
161 using namespace HepMC;
165 double ugol[24], ugol2[24];
166 double etugol[24], etugol2[24];
167 double tower_eta, tower_phi;
168 double tower_energy, tower_energy_e, tower_energy_h;
169 double tower_energyet, tower_energyet_e, tower_energyet_h;
170 double s1t, s2t, s1e, s2e, s1h, s2h, s1t1, s2t1;
171 double ets1t, ets2t, ets1e, ets2e, ets1h, ets2h, ets1t1, ets2t1;
173 double s1[24],
s2[24];
174 double ets1[24], ets2[24];
183 for(
int j=0;
j<24;
j++) {
198 if(!calotower.isValid()){
199 cout <<
"Error! Can't get calotower product!" << endl;
209 tower_eta =
j->eta();
210 tower_phi =
j->phi();
211 tower_energy_e =
j->emEnergy();
212 tower_energy_h =
j->hadEnergy();
213 tower_energy = tower_energy_e + tower_energy_h;
214 tower_energyet_e =
j->emEt();
215 tower_energyet_h =
j->hadEt();
216 tower_energyet = tower_energyet_e + tower_energyet_h;
218 s1t = tower_energy*
sin(2.*tower_phi);
219 s2t = tower_energy*
cos(2.*tower_phi);
220 s1e = tower_energy_e*
sin(2.*tower_phi);
221 s2e = tower_energy_e*
cos(2.*tower_phi);
222 s1h = tower_energy_h*
sin(2.*tower_phi);
223 s2h = tower_energy_h*
cos(2.*tower_phi);
225 s1t1 = tower_energy*
sin(tower_phi);
226 s2t1 = tower_energy*
cos(tower_phi);
228 ets1t = tower_energyet*
sin(2.*tower_phi);
229 ets2t = tower_energyet*
cos(2.*tower_phi);
230 ets1e = tower_energyet_e*
sin(2.*tower_phi);
231 ets2e = tower_energyet_e*
cos(2.*tower_phi);
232 ets1h = tower_energyet_h*
sin(2.*tower_phi);
233 ets2h = tower_energyet_h*
cos(2.*tower_phi);
235 ets1t1 = tower_energyet*
sin(tower_phi);
236 ets2t1 = tower_energyet*
cos(tower_phi);
258 if (fabs(tower_eta)>3.){
278 if (fabs(tower_eta)<3.){
307 if (fabs(tower_eta)>1.5) {
317 if (fabs(tower_eta)<1.5){
338 if (fabs(tower_eta)>3.){
357 if (fabs(tower_eta)<3.){
386 if (fabs(tower_eta)>1.5) {
396 if (fabs(tower_eta)<1.5){
407 for(
int j1=0;j1<24;j1++) {
409 if (
s2[j1]==0.) {ugol[j1]=0.;}
410 else {ugol[j1] = 0.5*atan2(s1[j1],
s2[j1]);}
412 if ((j1==21) || (j1==22) || (j1==23))
414 if (
s2[j1]==0.) {ugol[j1]=0.;}
415 else {ugol[j1] = atan2(s1[j1],
s2[j1]);}
418 ugol2[j1] = ugol[j1];
452 for(
int j1=0;j1<24;j1++) {
454 if (ets2[j1]==0.) {etugol[j1]=0.;}
455 else {etugol[j1] = 0.5*atan2(ets1[j1],ets2[j1]);}
457 if ((j1==21) || (j1==22) || (j1==23))
459 if (ets2[j1]==0.) {etugol[j1]=0.;}
460 else {etugol[j1] = atan2(ets1[j1],ets2[j1]);}
463 etugol2[j1] = etugol[j1];
515 double trackPsi_eta_mid;
516 double trackPsi_eta_pos;
517 double trackPsi_eta_neg;
518 double trackPsi_eta_posgap;
519 double trackPsi_eta_neggap;
521 double trackPsi_even;
523 double trackPsi_PosCh;
524 double trackPsi_NegCh;
533 cout <<
"Error! Can't get selectTracks!" << endl;
536 double trackSin_eta_mid = 0;
537 double trackCos_eta_mid = 0;
538 double trackSin_eta_pos = 0;
539 double trackCos_eta_pos = 0;
540 double trackSin_eta_neg = 0;
541 double trackCos_eta_neg = 0;
542 double trackSin_eta_posgap = 0;
543 double trackCos_eta_posgap = 0;
544 double trackSin_eta_neggap = 0;
545 double trackCos_eta_neggap = 0;
546 double trackSin_eta = 0;
547 double trackCos_eta = 0;
548 double trackSin_even = 0;
549 double trackCos_even = 0;
550 double trackSin_odd = 0;
551 double trackCos_odd = 0;
552 double trackSin_PosCh = 0;
553 double trackCos_PosCh = 0;
554 double trackSin_NegCh = 0;
555 double trackCos_NegCh = 0;
559 for(reco::TrackCollection::const_iterator
j =
tracks->begin();
j !=
tracks->end();
j++){
561 track_eta =
j->eta();
562 track_phi =
j->phi();
564 track_charge =
j->charge();
565 if ((track_phi<1.0) || (track_phi>1.16)){
567 if (fabs(track_eta) < 2.0){
568 trackSin_eta+=
sin(2*track_phi);
569 trackCos_eta+=
cos(2*track_phi);
573 if((track_charge > 0) && (fabs(track_eta) < 0.75) ){
574 trackSin_PosCh+=
sin(2*track_phi);
575 trackCos_PosCh+=
cos(2*track_phi);
577 if((track_charge < 0) && (fabs(track_eta) < 0.75)){
578 trackSin_NegCh+=
sin(2*track_phi);
579 trackCos_NegCh+=
cos(2*track_phi);
582 face = (double)rnd/(
double)RAND_MAX;
584 if (fabs(track_eta) < 0.75){
586 trackSin_even+=
sin(2*track_phi);
587 trackCos_even+=
cos(2*track_phi);
591 trackSin_odd+=
sin(2*track_phi);
592 trackCos_odd+=
cos(2*track_phi);
595 if(fabs(track_eta)<0.75){
596 trackSin_eta_mid+=
sin(2*track_phi);
597 trackCos_eta_mid+=
cos(2*track_phi);
600 if((track_eta >= 0.75) && (track_eta < 2.0)){
601 trackSin_eta_pos+=
sin(2*track_phi);
602 trackCos_eta_pos+=
cos(2*track_phi);
604 if((track_eta <= -0.75) && (track_eta > -2.0)){
605 trackSin_eta_neg+=
sin(2*track_phi);
606 trackCos_eta_neg+=
cos(2*track_phi);
609 if((track_eta >= 1) && (track_eta < 2.0)){
610 trackSin_eta_posgap+=
sin(2*track_phi);
611 trackCos_eta_posgap+=
cos(2*track_phi);
613 if((track_eta <= -1) && (track_eta > -2.0)){
614 trackSin_eta_neggap+=
sin(2*track_phi);
615 trackCos_eta_neggap+=
cos(2*track_phi);
620 trackPsi_eta_mid = 0.5*atan2(trackSin_eta_mid,trackCos_eta_mid);
621 trackPsi_eta_pos = 0.5*atan2(trackSin_eta_pos,trackCos_eta_pos);
622 trackPsi_eta_neg = 0.5*atan2(trackSin_eta_neg,trackCos_eta_neg);
623 trackPsi_eta = 0.5*atan2(trackSin_eta,trackCos_eta);
624 trackPsi_odd = 0.5*atan2(trackSin_odd,trackCos_odd);
625 trackPsi_even = 0.5*atan2(trackSin_even,trackCos_even);
626 trackPsi_PosCh = 0.5*atan2(trackSin_PosCh,trackCos_PosCh);
627 trackPsi_NegCh = 0.5*atan2(trackSin_NegCh,trackCos_NegCh);
628 trackPsi_eta_posgap = 0.5*atan2(trackSin_eta_posgap,trackCos_eta_posgap);
629 trackPsi_eta_neggap = 0.5*atan2(trackSin_eta_neggap,trackCos_eta_neggap);
635 EvtPlane ecalPlane(ugol2[6],s1[6],
s2[6],
"Ecal");
636 EvtPlane hcalPlane(ugol2[3],s1[3],
s2[3],
"Hcal");
637 EvtPlane hfPlane(ugol2[11],s1[11],
s2[11],
"HF");
638 EvtPlane caloPlane(ugol2[0],s1[0],
s2[0],
"Calo");
639 EvtPlane calohfPlane(ugol2[12],s1[12],
s2[12],
"CaloHF");
641 EvtPlane ecalpPlane(ugol2[13],s1[13],
s2[13],
"EcalP");
642 EvtPlane ecalmPlane(ugol2[14],s1[14],
s2[14],
"EcalM");
643 EvtPlane hcalpPlane(ugol2[15],s1[15],
s2[15],
"HcalP");
644 EvtPlane hcalmPlane(ugol2[16],s1[16],
s2[16],
"HcalM");
645 EvtPlane hfpPlane(ugol2[9],s1[9],
s2[9],
"HFp");
646 EvtPlane hfmPlane(ugol2[10],s1[10],
s2[10],
"HFm");
647 EvtPlane calopPlane(ugol2[17],s1[17],
s2[17],
"CaloP");
648 EvtPlane calomPlane(ugol2[18],s1[18],
s2[18],
"CaloM");
649 EvtPlane calohfpPlane(ugol2[19],s1[19],
s2[19],
"CaloHFP");
650 EvtPlane calohfmPlane(ugol2[20],s1[20],
s2[20],
"CaloHFM");
652 EvtPlane hf1Plane(ugol2[23],s1[23],
s2[23],
"HF1");
653 EvtPlane hfp1Plane(ugol2[21],s1[21],
s2[21],
"HFp1");
654 EvtPlane hfm1Plane(ugol2[22],s1[22],
s2[22],
"HFm1");
656 EvtPlane etecalPlane(etugol2[6],ets1[6],ets2[6],
"etEcal");
657 EvtPlane ethcalPlane(etugol2[3],ets1[3],ets2[3],
"etHcal");
658 EvtPlane ethfPlane(etugol2[11],ets1[11],ets2[11],
"etHF");
659 EvtPlane etcaloPlane(etugol2[0],ets1[0],ets2[0],
"etCalo");
660 EvtPlane etcalohfPlane(etugol2[12],ets1[12],ets2[12],
"etCaloHF");
662 EvtPlane etecalpPlane(etugol2[13],ets1[13],ets2[13],
"etEcalP");
663 EvtPlane etecalmPlane(etugol2[14],ets1[14],ets2[14],
"etEcalM");
664 EvtPlane ethcalpPlane(etugol2[15],ets1[15],ets2[15],
"etHcalP");
665 EvtPlane ethcalmPlane(etugol2[16],ets1[16],ets2[16],
"etHcalM");
666 EvtPlane ethfpPlane(etugol2[9],ets1[9],ets2[9],
"etHFp");
667 EvtPlane ethfmPlane(etugol2[10],ets1[10],ets2[10],
"etHFm");
668 EvtPlane etcalopPlane(etugol2[17],ets1[17],ets2[17],
"etCaloP");
669 EvtPlane etcalomPlane(etugol2[18],ets1[18],ets2[18],
"etCaloM");
670 EvtPlane etcalohfpPlane(etugol2[19],ets1[19],ets2[19],
"etCaloHFP");
671 EvtPlane etcalohfmPlane(etugol2[20],ets1[20],ets2[20],
"etCaloHFM");
673 EvtPlane ethf1Plane(etugol2[23],ets1[23],ets2[23],
"etHF1");
674 EvtPlane ethfp1Plane(etugol2[21],ets1[21],ets2[21],
"etHFp1");
675 EvtPlane ethfm1Plane(etugol2[22],ets1[22],ets2[22],
"etHFm1");
678 EvtPlane EvtPlaneFromTracksMidEta(trackPsi_eta_mid,trackSin_eta_mid,trackCos_eta_mid,
"EvtPlaneFromTracksMidEta");
679 EvtPlane EvtPlaneFromTracksPosEta(trackPsi_eta_pos,trackSin_eta_pos,trackCos_eta_pos,
"EvtPlaneFromTracksPosEta");
680 EvtPlane EvtPlaneFromTracksNegEta(trackPsi_eta_neg,trackSin_eta_neg,trackCos_eta_neg,
"EvtPlaneFromTracksNegEta");
681 EvtPlane EvtPlaneFromTracksEta(trackPsi_eta,trackSin_eta,trackCos_eta,
"EvtPlaneFromTracksEta");
682 EvtPlane EvtPlaneFromTracksOdd(trackPsi_odd,trackSin_odd,trackCos_odd,
"EvtPlaneFromTracksOdd");
683 EvtPlane EvtPlaneFromTracksEven(trackPsi_even,trackSin_even,trackCos_even,
"EvtPlaneFromTracksEven");
684 EvtPlane EvtPlaneFromTracksPosCh(trackPsi_PosCh,trackSin_PosCh,trackCos_PosCh,
"EvtPlaneFromTracksPosCh");
685 EvtPlane EvtPlaneFromTracksNegCh(trackPsi_NegCh,trackSin_NegCh,trackCos_NegCh,
"EvtPlaneFromTracksNegCh");
686 EvtPlane EvtPTracksPosEtaGap(trackPsi_eta_posgap,trackSin_eta_posgap,trackCos_eta_posgap,
"EvtPTracksPosEtaGap");
687 EvtPlane EvtPTracksNegEtaGap(trackPsi_eta_neggap,trackSin_eta_neggap,trackCos_eta_neggap,
"EvtPTracksNegEtaGap");
689 if(useTrackMidEta_) evtplaneOutput->push_back(EvtPlaneFromTracksMidEta);
690 if(useTrackPosEta_) evtplaneOutput->push_back(EvtPlaneFromTracksPosEta);
691 if(useTrackNegEta_) evtplaneOutput->push_back(EvtPlaneFromTracksNegEta);
692 if(useTrackEta_) evtplaneOutput->push_back(EvtPlaneFromTracksEta);
693 if(useTrackOdd_) evtplaneOutput->push_back(EvtPlaneFromTracksOdd);
694 if(useTrackEven_) evtplaneOutput->push_back(EvtPlaneFromTracksEven);
695 if(useTrackPosCh_) evtplaneOutput->push_back(EvtPlaneFromTracksPosCh);
696 if(useTrackNegCh_) evtplaneOutput->push_back(EvtPlaneFromTracksNegCh);
697 if(useTrackPosEtaGap_) evtplaneOutput->push_back(EvtPTracksPosEtaGap);
698 if(useTrackNegEtaGap_) evtplaneOutput->push_back(EvtPTracksNegEtaGap);
703 evtplaneOutput->push_back(ecalPlane);
704 evtplaneOutput->push_back(ecalpPlane);
705 evtplaneOutput->push_back(ecalmPlane);
706 evtplaneOutput->push_back(etecalPlane);
707 evtplaneOutput->push_back(etecalpPlane);
708 evtplaneOutput->push_back(etecalmPlane);
713 evtplaneOutput->push_back(hcalPlane);
714 evtplaneOutput->push_back(hcalpPlane);
715 evtplaneOutput->push_back(hcalmPlane);
716 evtplaneOutput->push_back(ethcalPlane);
717 evtplaneOutput->push_back(ethcalpPlane);
718 evtplaneOutput->push_back(ethcalmPlane);
723 evtplaneOutput->push_back(caloPlane);
724 evtplaneOutput->push_back(hfPlane);
725 evtplaneOutput->push_back(hfpPlane);
726 evtplaneOutput->push_back(hfmPlane);
727 evtplaneOutput->push_back(calohfPlane);
728 evtplaneOutput->push_back(calopPlane);
729 evtplaneOutput->push_back(calomPlane);
730 evtplaneOutput->push_back(calohfpPlane);
731 evtplaneOutput->push_back(calohfmPlane);
732 evtplaneOutput->push_back(etcaloPlane);
733 evtplaneOutput->push_back(ethfPlane);
734 evtplaneOutput->push_back(ethfpPlane);
735 evtplaneOutput->push_back(ethfmPlane);
736 evtplaneOutput->push_back(etcalohfPlane);
737 evtplaneOutput->push_back(etcalopPlane);
738 evtplaneOutput->push_back(etcalomPlane);
739 evtplaneOutput->push_back(etcalohfpPlane);
740 evtplaneOutput->push_back(etcalohfmPlane);
741 evtplaneOutput->push_back(hf1Plane);
742 evtplaneOutput->push_back(hfp1Plane);
743 evtplaneOutput->push_back(hfm1Plane);
744 evtplaneOutput->push_back(ethf1Plane);
745 evtplaneOutput->push_back(ethfp1Plane);
746 evtplaneOutput->push_back(ethfm1Plane);
750 iEvent.
put(evtplaneOutput,
"recoLevel");
T getUntrackedParameter(std::string const &, T const &) const
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
std::vector< CaloTower >::const_iterator const_iterator
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Cos< T >::type cos(const T &t)
std::vector< EvtPlane > EvtPlaneCollection
virtual void produce(edm::Event &, const edm::EventSetup &)
EvtPlaneProducer(const edm::ParameterSet &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const