Skip to content
Snippets Groups Projects
Commit d3881baf authored by Clemens Lange's avatar Clemens Lange
Browse files

Add initial docker-cms payload

parent f5f3fec9
Branches
No related tags found
No related merge requests found
Pipeline #1413033 failed
build_docker:
only:
- pushes
- merge_requests
except:
- triggers
tags:
- docker-privileged
- docker-machine
image: docker:latest
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_BUILD_TOKEN $CI_REGISTRY
# Need to start the automounter for CVMFS:
- docker run -d --name cvmfs --pid=host --user 0 --privileged --restart always -v /cvmfsmounts:/cvmfsmounts:rshared gitlab-registry.cern.ch/vcs/cvmfs-automounter:master
script:
# ls /cvmfs/cms.cern.ch/ won't work, but from the container it will
# If you want to automount CVMFS on a new docker container add the volume config /cvmfsmounts/cvmfs:/cvmfs:rslave
- docker run -v /cvmfsmounts/cvmfs:/cvmfs:rslave -v $(pwd):$(pwd) -w $(pwd) --name ${CI_PROJECT_NAME} ${FROM} /bin/bash ./.gitlab/build.sh
- SHA256=$(docker commit ${CI_PROJECT_NAME})
- docker tag ${SHA256} ${TO}
- docker push ${TO}
variables:
FROM: clelange/cc7-cms # Override the image specified in the Dockerfile
TO: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}
#!/bin/bash
# exit when any command fails, but allow variables not set (no -u); verbose
set -ex
# make cmsrel etc. work
shopt -s expand_aliases
export MY_BUILD_DIR=${PWD}
source /cvmfs/cms.cern.ch/cmsset_default.sh
cd /home/cmsusr
cmsrel CMSSW_10_6_8_patch1
mkdir -p CMSSW_10_6_8_patch1/src/AnalysisCode
mv ${MY_BUILD_DIR}/ZPeakAnalysis CMSSW_5_3_32/src/AnalysisCode
cd CMSSW_10_6_8_patch1/src
cmsenv
scram b
<use name="root"/>
<export>
<lib name="1"/>
</export>
<use name="FWCore/Framework"/>
<use name="FWCore/ParameterSet"/>
<use name="FWCore/ServiceRegistry"/>
<use name="PhysicsTools/UtilAlgos"/>
<library file="*.cc" name="AnalysisCodeZPeakAnalysisPlugins">
<flags EDM_PLUGIN="1"/>
</library>
#include <map>
#include <string>
#include "TH1.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "DataFormats/PatCandidates/interface/Muon.h"
#include "DataFormats/PatCandidates/interface/Electron.h"
#include "DataFormats/PatCandidates/interface/Muon.h"
class MyZPeakAnalyzer : public edm::EDAnalyzer {
public:
explicit MyZPeakAnalyzer(const edm::ParameterSet&);
~MyZPeakAnalyzer();
private:
virtual void beginJob() ;
virtual void analyze(const edm::Event&, const edm::EventSetup&);
virtual void endJob() ;
// simple map to contain all histograms;
// histograms are booked in the beginJob()
// method
std::map<std::string,TH1F*> histContainer_;
// ----------member data ---------------------------
edm::EDGetTokenT<pat::MuonCollection> muonCollToken;
edm::EDGetTokenT<pat::ElectronCollection> elecCollToken;
// input tags
edm::InputTag muonSrc_;
edm::InputTag elecSrc_;
};
MyZPeakAnalyzer::MyZPeakAnalyzer(const edm::ParameterSet& iConfig):
histContainer_(),
muonSrc_(iConfig.getUntrackedParameter<edm::InputTag>("muonSrc")),
elecSrc_(iConfig.getUntrackedParameter<edm::InputTag>("elecSrc")){
muonCollToken = consumes<pat::MuonCollection>(muonSrc_);
elecCollToken = consumes<pat::ElectronCollection>(elecSrc_);
}
MyZPeakAnalyzer::~MyZPeakAnalyzer(){
}
void
MyZPeakAnalyzer::analyze(const edm::Event& iEvent,
const edm::EventSetup& iSetup){
// get pat muon collection
edm::Handle< std::vector<pat::Muon>> muons;
iEvent.getByToken(muonCollToken, muons);
// fill pat muon histograms
for (auto it = muons->cbegin(); it != muons->cend(); ++it) {
histContainer_["muonPt"] ->Fill(it->pt());
histContainer_["muonEta"]->Fill(it->eta());
histContainer_["muonPhi"]->Fill(it->phi());
if( it->pt()>20 && fabs(it->eta())<2.1 ){
for (auto it2 = muons->cbegin(); it2 != muons->cend(); ++it2){
if (it2 > it){
// check only muon pairs of unequal charge
if( it->charge()*it2->charge()<0){
histContainer_["mumuMass"]->Fill((it->p4()+it2->p4()).mass());
}
}
}
}
}
// get pat electron collection
edm::Handle< std::vector<pat::Electron>> electrons;
iEvent.getByToken(elecCollToken, electrons);
// loop over electrons
for (auto it = electrons->cbegin(); it != electrons->cend(); ++it) {
histContainer_["elePt"] ->Fill(it->pt());
histContainer_["eleEta"]->Fill(it->eta());
histContainer_["elePhi"]->Fill(it->phi());
}
// Multiplicity
histContainer_["eleMult" ]->Fill(electrons->size());
histContainer_["muonMult"]->Fill(muons->size() );
}
void
MyZPeakAnalyzer::beginJob()
{
// register to the TFileService
edm::Service<TFileService> fs;
histContainer_["mumuMass"]=fs->make<TH1F>("mumuMass", "mass", 90, 30., 120.);
// book histograms for Multiplicity:
histContainer_["eleMult"]=fs->make<TH1F>("eleMult", "electron multiplicity", 100, 0, 50);
histContainer_["muonMult"]=fs->make<TH1F>("muonMult", "muon multiplicity", 100, 0, 50);
// book histograms for Pt:
histContainer_["elePt"]=fs->make<TH1F>("elePt", "electron Pt", 100, 0, 200);
histContainer_["muonPt"]=fs->make<TH1F>("muonPt", "muon Pt", 100, 0, 200);
// book histograms for Eta:
histContainer_["eleEta"]=fs->make<TH1F>("eleEta", "electron Eta",100, -5, 5);
histContainer_["muonEta"]=fs->make<TH1F>("muonEta", "muon Eta", 100, -5, 5);
// book histograms for Phi:
histContainer_["elePhi"]=fs->make<TH1F>("elePhi", "electron Phi", 100, -3.5, 3.5);
histContainer_["muonPhi"]=fs->make<TH1F>("muonPhi", "muon Phi", 100, -3.5, 3.5);
}
void
MyZPeakAnalyzer::endJob()
{
}
#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(MyZPeakAnalyzer);
import FWCore.ParameterSet.Config as cms
process = cms.Process("Test")
process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring(
# Multiple file should be comma separated
# Data set: /DYJetsToLL_M-50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM
'/store/mc/RunIIFall17MiniAODv2/DYJetsToLL_M-50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/MINIAODSIM/PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/50000/E43E4210-7742-E811-9430-AC1F6B23C96A.root',
)
)
process.MessageLogger = cms.Service("MessageLogger")
process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(10000)
)
process.analyzeBasicPat = cms.EDAnalyzer("MyZPeakAnalyzer",
muonSrc = cms.untracked.InputTag("slimmedMuons"),
elecSrc = cms.untracked.InputTag("slimmedElectrons"),
)
process.TFileService = cms.Service("TFileService",
fileName = cms.string('myZPeak.root')
)
process.p = cms.Path(process.analyzeBasicPat)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment