예제 #1
0
void MuonReader::readMuons() {
    for (unsigned int index = 0; index < energyReader.size(); index++) {
        double energy = energyReader.getVariableAt(index);
        double px = pxReader.getVariableAt(index);
        double py = pyReader.getVariableAt(index);
        double pz = pzReader.getVariableAt(index);

        MuonPointer muon(new Muon(energy, px, py, pz));
        muon->setUsedAlgorithm(algorithm);
        muon->setCharge(chargeReader.getIntVariableAt(index));

        muon->setEcalIsolation(ecalIsolationReader.getVariableAt(index));
        muon->setHcalIsolation(hcalIsolationReader.getVariableAt(index));
        muon->setTrackerIsolation(trackerIsolationReader.getVariableAt(index));

        // muon->setRelTrkIsolation(relTrackIsolationReader_.getVariableAt(index));

        muon->setPFRelIso03(PFRelIso03Reader_.getVariableAt(index));
        muon->setPFRelIso04(PFRelIso04Reader_.getVariableAt(index));
        muon->setPFRelIso03DeltaBeta(PFRelIso03DeltaBetaReader_.getVariableAt(index));
        muon->setPFRelIso04DeltaBeta(PFRelIso04DeltaBetaReader_.getVariableAt(index));
        muon->setsumChargedHadronPt03(sumChargedHadronPt03Reader_.getVariableAt(index));
        muon->setsumNeutralHadronPt03(sumNeutralHadronPt03Reader_.getVariableAt(index));
        muon->setsumPhotonPt03(sumPhotonPt03Reader_.getVariableAt(index));
        muon->setsumPUPt03(sumPUPt03Reader_.getVariableAt(index));

        muon->setsumChargedHadronPt04(sumChargedHadronPt04Reader_.getVariableAt(index));
        muon->setsumNeutralHadronPt04(sumNeutralHadronPt04Reader_.getVariableAt(index));
        muon->setsumPhotonPt04(sumPhotonPt04Reader_.getVariableAt(index));
        muon->setsumPUPt04(sumPUPt04Reader_.getVariableAt(index));


        muon->setD0(d0_PV_Reader.getVariableAt(index));
        muon->setD0_wrtBeamSpot(d0_BS_Reader.getVariableAt(index));

        muon->makeGlobal(isGlobalMuon.getBoolVariableAt(index));
        muon->setTrackerMuon(isTrackerMuon.getBoolVariableAt(index));

        muon->setZDistanceToPrimaryVertex(vertex_dist_z.getVariableAt(index));
        muon->setNormalisedChi2(normalisedChi2.getVariableAt(index));
        muon->setNumberOfValidHits(NumberOfValidHits.getIntVariableAt(index));
        muon->setNumberOfValidMuonHits(NumberOfValidMuonHits.getIntVariableAt(index));
        muon->setPixelLayersWithMeasurement(PixelLayersWithMeasurement.getIntVariableAt(index));
        muon->setNumberOfMatchedStations(NumberOfMatchedStations.getIntVariableAt(index));
        muon->setNumberOfMatches(NumberOfMatches.getIntVariableAt(index));

        if (Globals::NTupleVersion >= 8) {
            muon->setPFMuon(isPFMuon.getBoolVariableAt(index));
            muon->setTrackerLayersWithMeasurement(TrackerLayersWithMeasurement.getIntVariableAt(index));
            muon->setNumberOfValidPixelHits(NumberOfValidPixelHits.getIntVariableAt(index));
        }

        muons.push_back(muon);
    }
}
예제 #2
0
void GlobalPositionRcdWrite::analyze(const edm::Event& evt, const edm::EventSetup& iSetup)
{
   if (nEventCalls_ > 0) {
     std::cout << "Writing to DB to be done only once, "
	       << "set 'untracked PSet maxEvents = {untracked int32 input = 1}'."
	       << "(Your writing should be fine.)" << std::endl;
     return;
   }
   
   Alignments* globalPositions = new Alignments();

   AlignTransform tracker(AlignTransform::Translation(m_tracker.getParameter<double>("x"),
						      m_tracker.getParameter<double>("y"),
						      m_tracker.getParameter<double>("z")),
			  (m_useEulerAngles != true) ?
			    this->toMatrix(m_tracker.getParameter<double>("alpha"),
					   m_tracker.getParameter<double>("beta"),
					   m_tracker.getParameter<double>("gamma"))
			  :
			    AlignTransform::EulerAngles(m_tracker.getParameter<double>("alpha"),
							m_tracker.getParameter<double>("beta"),
							m_tracker.getParameter<double>("gamma")),
			  DetId(DetId::Tracker).rawId());
   
   AlignTransform muon(AlignTransform::Translation(m_muon.getParameter<double>("x"),
						   m_muon.getParameter<double>("y"),
						   m_muon.getParameter<double>("z")),
		       (m_useEulerAngles != true) ?
		         this->toMatrix(m_muon.getParameter<double>("alpha"),
					m_muon.getParameter<double>("beta"),
					m_muon.getParameter<double>("gamma"))
		       :
		         AlignTransform::EulerAngles(m_muon.getParameter<double>("alpha"),
						     m_muon.getParameter<double>("beta"),
						     m_muon.getParameter<double>("gamma")),
		       DetId(DetId::Muon).rawId());
   
   AlignTransform ecal(AlignTransform::Translation(m_ecal.getParameter<double>("x"),
						   m_ecal.getParameter<double>("y"),
						   m_ecal.getParameter<double>("z")),
		       (m_useEulerAngles != true) ?
		         this->toMatrix(m_ecal.getParameter<double>("alpha"),
					m_ecal.getParameter<double>("beta"),
					m_ecal.getParameter<double>("gamma"))
		       :
		         AlignTransform::EulerAngles(m_ecal.getParameter<double>("alpha"),
						     m_ecal.getParameter<double>("beta"),
						     m_ecal.getParameter<double>("gamma")),
		       DetId(DetId::Ecal).rawId());

   AlignTransform hcal(AlignTransform::Translation(m_hcal.getParameter<double>("x"),
						   m_hcal.getParameter<double>("y"),
						   m_hcal.getParameter<double>("z")),
		       (m_useEulerAngles != true) ?
		         this->toMatrix(m_hcal.getParameter<double>("alpha"),
					m_hcal.getParameter<double>("beta"),
					m_hcal.getParameter<double>("gamma"))
		       :
		         AlignTransform::EulerAngles(m_hcal.getParameter<double>("alpha"),
						     m_hcal.getParameter<double>("beta"),
						     m_hcal.getParameter<double>("gamma")),
		       DetId(DetId::Hcal).rawId());

   AlignTransform calo(AlignTransform::Translation(m_calo.getParameter<double>("x"),
						   m_calo.getParameter<double>("y"),
						   m_calo.getParameter<double>("z")),
		       (m_useEulerAngles != true) ?
		         this->toMatrix(m_calo.getParameter<double>("alpha"),
					m_calo.getParameter<double>("beta"),
					m_calo.getParameter<double>("gamma"))
		       :
		         AlignTransform::EulerAngles(m_calo.getParameter<double>("alpha"),
						     m_calo.getParameter<double>("beta"),
						     m_calo.getParameter<double>("gamma")),
		       DetId(DetId::Calo).rawId());

   std::cout << "\nProvided rotation angles are interpreted as "
	     << ((m_useEulerAngles != true) ? "rotations around X, Y and Z" : "Euler angles")
	     << ".\n" << std::endl;
   
   std::cout << "Tracker (" << tracker.rawId() << ") at " << tracker.translation() 
	     << " " << tracker.rotation().eulerAngles() << std::endl;
   std::cout << tracker.rotation() << std::endl;

   std::cout << "Muon (" << muon.rawId() << ") at " << muon.translation() 
	     << " " << muon.rotation().eulerAngles() << std::endl;
   std::cout << muon.rotation() << std::endl;

   std::cout << "Ecal (" << ecal.rawId() << ") at " << ecal.translation() 
	     << " " << ecal.rotation().eulerAngles() << std::endl;
   std::cout << ecal.rotation() << std::endl;

   std::cout << "Hcal (" << hcal.rawId() << ") at " << hcal.translation()
	     << " " << hcal.rotation().eulerAngles() << std::endl;
   std::cout << hcal.rotation() << std::endl;

   std::cout << "Calo (" << calo.rawId() << ") at " << calo.translation()
	     << " " << calo.rotation().eulerAngles() << std::endl;
   std::cout << calo.rotation() << std::endl;

   globalPositions->m_align.push_back(tracker);
   globalPositions->m_align.push_back(muon);
   globalPositions->m_align.push_back(ecal);
   globalPositions->m_align.push_back(hcal);
   globalPositions->m_align.push_back(calo);

   std::cout << "Uploading to the database..." << std::endl;

   edm::Service<cond::service::PoolDBOutputService> poolDbService;

   if (!poolDbService.isAvailable())
      throw cms::Exception("NotAvailable") << "PoolDBOutputService not available";
                  
//    if (poolDbService->isNewTagRequest("GlobalPositionRcd")) {
//       poolDbService->createNewIOV<Alignments>(&(*globalPositions), poolDbService->endOfTime(), "GlobalPositionRcd");
//    } else {
//       poolDbService->appendSinceTime<Alignments>(&(*globalPositions), poolDbService->currentTime(), "GlobalPositionRcd");
//    }
   poolDbService->writeOne<Alignments>(&(*globalPositions), 
				       poolDbService->currentTime(),
				       //poolDbService->beginOfTime(),
                                       "GlobalPositionRcd");



   std::cout << "done!" << std::endl;
   nEventCalls_++;
}