Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validationfor mc m #93

Closed
wants to merge 27 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import FWCore.ParameterSet.Config as cms

generator = cms.EDProducer("LHE2HepMCConverter",
LHEEventProduct = cms.InputTag("source"),
LHERunInfoProduct = cms.InputTag("source")
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import FWCore.ParameterSet.Config as cms

lheCOMWeightProducer = cms.EDProducer("LHECOMWeightProducer",
lheSrc = cms.InputTag("source"),
NewECMS = cms.double(7000)
)
3 changes: 3 additions & 0 deletions Validation/EventGenerator/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<use name="hepmc"/>
<use name="SimDataFormats/GeneratorProducts"/>
<use name="FWCore/Framework"/>
<use name="FWCore/ParameterSet"/>
<use name="DataFormats/Common"/>
<use name="clhep"/>
<use name="root"/>
<export>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class BasicGenParticleValidation : public edm::EDAnalyzer
{
Expand All @@ -50,6 +51,8 @@ class BasicGenParticleValidation : public edm::EDAnalyzer

private:

WeightManager _wmanager;

edm::InputTag hepmcCollection_;
edm::InputTag genparticleCollection_;
edm::InputTag genjetCollection_;
Expand Down
80 changes: 80 additions & 0 deletions Validation/EventGenerator/interface/BasicHepMCHeavyIonValidation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#ifndef BASICHEPMCHEAVYIONVALIDATION_H
#define BASICHEPMCHEAVYIONVALIDATION_H

/*class BasicHepMCHeavyIonValidation
*
* Class to fill Event Generator dqm monitor elements; works on HepMCProduct HepMC::HeavyIon
* Quan Wang - 04/2013
*
*/

// framework & common header files
#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/Run.h"

#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"

//DQM services
#include "DQMServices/Core/interface/DQMStore.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "DQMServices/Core/interface/MonitorElement.h"

#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"

#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class BasicHepMCHeavyIonValidation : public edm::EDAnalyzer
{
public:
explicit BasicHepMCHeavyIonValidation(const edm::ParameterSet&);
virtual ~BasicHepMCHeavyIonValidation();
virtual void beginJob();
virtual void endJob();
virtual void analyze(const edm::Event&, const edm::EventSetup&);
virtual void beginRun(const edm::Run&, const edm::EventSetup&);
virtual void endRun(const edm::Run&, const edm::EventSetup&);

private:

WeightManager _wmanager;

edm::InputTag hepmcCollection_;
bool QWdebug_;

/// PDT table
//edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ;

///ME's "container"
DQMStore *dbe;

MonitorElement* nEvt;

// Additional information stored in HeavyIon structure
MonitorElement* Ncoll_hard; // Number of hard scatterings
MonitorElement* Npart_proj; // Number of projectile participants
MonitorElement* Npart_targ; // Number of target participants
MonitorElement* Ncoll; // Number of NN (nucleon-nucleon) collisions
MonitorElement* N_Nwounded_collisions; // Number of N-Nwounded collisions
MonitorElement* Nwounded_N_collisions; // Number of Nwounded-N collisons
MonitorElement* Nwounded_Nwounded_collisions; // Number of Nwounded-Nwounded collisions
MonitorElement* spectator_neutrons; // Number of spectator neutrons
MonitorElement* spectator_protons; // Number of spectator protons
MonitorElement* impact_parameter; // Impact Parameter(fm) of collision
MonitorElement* event_plane_angle; // Azimuthal angle of event plane
MonitorElement* eccentricity; // eccentricity of participating nucleons
// in the transverse plane
// (as in phobos nucl-ex/0510031)
MonitorElement* sigma_inel_NN; // nucleon-nucleon inelastic
// (including diffractive) cross-section


};

#endif
12 changes: 12 additions & 0 deletions Validation/EventGenerator/interface/BasicHepMCValidation.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class BasicHepMCValidation : public edm::EDAnalyzer
{
Expand All @@ -44,6 +45,8 @@ class BasicHepMCValidation : public edm::EDAnalyzer

private:

WeightManager _wmanager;

edm::InputTag hepmcCollection_;

/// PDT table
Expand Down Expand Up @@ -101,13 +104,22 @@ class BasicHepMCValidation : public edm::EDAnalyzer
MonitorElement *stablePtclCharge;
MonitorElement *stablePtclp;
MonitorElement *stablePtclpT;
MonitorElement *partonNumber;
MonitorElement *partonpT;
MonitorElement *outVrtxStablePtclNumber;
//
MonitorElement *vrtxZ;
MonitorElement *vrtxRadius;
//
MonitorElement *Bjorken_x;

MonitorElement *status1ShortLived;

MonitorElement *DeltaEcms;
MonitorElement *DeltaPx;
MonitorElement *DeltaPy;
MonitorElement *DeltaPz;

};

#endif
3 changes: 3 additions & 0 deletions Validation/EventGenerator/interface/DrellYanValidation.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class DrellYanValidation : public edm::EDAnalyzer
{
Expand All @@ -44,6 +45,8 @@ class DrellYanValidation : public edm::EDAnalyzer

private:

WeightManager _wmanager;

edm::InputTag hepmcCollection_;

/// PDT table
Expand Down
4 changes: 4 additions & 0 deletions Validation/EventGenerator/interface/DuplicationChecker.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h"
#include "DataFormats/Provenance/interface/EventID.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class DuplicationChecker : public edm::EDAnalyzer
{

Expand All @@ -53,8 +55,10 @@ class DuplicationChecker : public edm::EDAnalyzer
void findValuesAssociatedWithKey(associationMap &mMap, double &key, itemList &theObjects);

private:
WeightManager _wmanager;

edm::InputTag generatedCollection_;
edm::InputTag lheEventProduct_;

bool searchForLHE_;

Expand Down
187 changes: 187 additions & 0 deletions Validation/EventGenerator/interface/HiggsValidation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
#ifndef HiggsValidation_H
#define HiggsValidation_H

/*class HiggsValidation
*
* Class to fill Event Generator dqm monitor elements; works on HepMCProduct
*
* $Date: 2012/08/12 16:13:28 $
* $Revision: 1.1 $
*
*/
#include <iostream>

// framework & common header files
#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/Run.h"

#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"

//DQM services
#include "DQMServices/Core/interface/DQMStore.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "DQMServices/Core/interface/MonitorElement.h"

#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
//#include "DataFormats/HepMCCandidate/interface/GenParticle.h"

#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
#include "TLorentzVector.h"

#include "Validation/EventGenerator/interface/WeightManager.h"

class HiggsValidation : public edm::EDAnalyzer {
public:
explicit HiggsValidation(const edm::ParameterSet&);
virtual ~HiggsValidation();
virtual void beginJob();
virtual void endJob();
virtual void analyze(const edm::Event&, const edm::EventSetup&);
virtual void beginRun(const edm::Run&, const edm::EventSetup&);
virtual void endRun(const edm::Run&, const edm::EventSetup&);

private:


class MonitoredDecays {
public:

MonitoredDecays(const edm::ParameterSet& iConfig){
fillMap();
std::vector<std::string> input = iConfig.getParameter<std::vector<std::string> >("monitorDecays");
for(std::vector<std::string>::const_iterator i = input.begin(); i!= input.end(); ++i){
fill(*i);
}
}

~MonitoredDecays(){};

size_t position(int pid1,int pid2){
if(abs(pid1) == 14 || abs(pid1) == 16) pid1 = 12;
if(abs(pid2) == 14 || abs(pid2) == 16) pid2 = 12;
for(size_t i = 0; i < channels.size(); ++i){
if((channels[i].first == abs(pid1) && channels[i].second == abs(pid2)) ||
(channels[i].first == abs(pid2) && channels[i].second == abs(pid1))) return i+1;
}
return channels.size()+1;
}

size_t size(){return channels.size() + 2;}
size_t undetermined(){return 0;}
size_t stable(){return size();}
std::string channel(size_t i){
if(i == 0) return "?";
if(i == channels.size()+1) return "Stable";
return convert(channels[i-1].first)+convert(channels[i-1].second);
}

int convert(std::string s){
if( namePidMap.count(s)){
return namePidMap[s];
}
return 0;
}

std::string convert(int pid){
pid = abs(pid);
if(pid == 14 || pid == 16) pid = 12;
for(std::map<std::string,int>::const_iterator i = namePidMap.begin(); i!= namePidMap.end(); ++i) {
if(i->second == pid) return i->first;
}
return "not found";
}

unsigned int NDecayParticles(){return nparticles_;}

int isDecayParticle(int pid){
int idx=0;
for(std::map<std::string,int>::const_iterator i = namePidMap.begin(); i!= namePidMap.end(); ++i) {
if(i->second == pid) return idx;
idx++;
}
return -1;
}

std::string ConvertIndex(int index){
int idx=0;
for(std::map<std::string,int>::const_iterator i = namePidMap.begin(); i!= namePidMap.end(); ++i) {
if(idx==index) return i->first;
idx++;
}
return "unknown";
}

private:
void fill(std::string s){
size_t pos = s.find("+");
std::string particle1 = s.substr(0,pos);
std::string particle2 = s.substr(pos+1,s.length()-pos);
std::pair<int,int> decay;
decay.first = convert(particle1);
decay.second = convert(particle2);
channels.push_back(decay);
}

void fillMap(){
namePidMap["d"] = 1;
namePidMap["u"] = 2;
namePidMap["s"] = 3;
namePidMap["c"] = 4;
namePidMap["b"] = 5;
namePidMap["t"] = 6;
namePidMap["e"] = 11;
namePidMap["nu"] = 12;
namePidMap["mu"] = 13;
namePidMap["tau"] = 15;
namePidMap["gamma"] = 22;
namePidMap["Z"] = 23;
namePidMap["W"] = 24;
nparticles_=0;
for(std::map<std::string,int>::const_iterator i = namePidMap.begin(); i!= namePidMap.end(); ++i){
nparticles_++;
}
}

std::map<std::string,int> namePidMap;

std::vector<std::pair<int,int> > channels;
unsigned int nparticles_;

};

int findHiggsDecayChannel(const HepMC::GenParticle*,std::vector<HepMC::GenParticle*> &decayprod);
std::string convert(int);

WeightManager _wmanager;

edm::InputTag hepmcCollection_;

int particle_id;
std::string particle_name;

MonitoredDecays* monitoredDecays;

/// PDT table
edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ;

///ME's "container"
DQMStore *dbe;

MonitorElement *nEvt;
MonitorElement *HiggsDecayChannels;

MonitorElement *Higgs_pt;
MonitorElement *Higgs_eta;
MonitorElement *Higgs_mass;

std::vector<MonitorElement*> HiggsDecayProd_pt;
std::vector<MonitorElement*> HiggsDecayProd_eta;

};

#endif
Loading