Skip to content

Commit

Permalink
Merge pull request #148 from jbsauvan/ntuples-updates
Browse files Browse the repository at this point in the history
Ntuple content updates
  • Loading branch information
jbsauvan committed Oct 30, 2017
2 parents 23ba449 + e696e7a commit 481009f
Show file tree
Hide file tree
Showing 4 changed files with 249 additions and 31 deletions.
60 changes: 49 additions & 11 deletions L1Trigger/L1THGCal/plugins/ntuples/HGCalTriggerNtupleHGCClusters.cc
@@ -1,6 +1,7 @@

#include <algorithm>
#include "DataFormats/L1THGCal/interface/HGCalCluster.h"
#include "DataFormats/L1THGCal/interface/HGCalMulticluster.h"
#include "DataFormats/ForwardDetId/interface/HGCalDetId.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
#include "L1Trigger/L1THGCal/interface/HGCalTriggerGeometryBase.h"
Expand All @@ -20,18 +21,22 @@ class HGCalTriggerNtupleHGCClusters : public HGCalTriggerNtupleBase
private:
virtual void clear() override final;


edm::EDGetToken clusters_token_;
bool filter_clusters_in_multiclusters_;
edm::EDGetToken clusters_token_, multiclusters_token_;

int cl_n_ ;
std::vector<uint32_t> cl_id_;
std::vector<float> cl_mipPt_;
std::vector<float> cl_pt_;
std::vector<float> cl_energy_;
std::vector<float> cl_eta_;
std::vector<float> cl_phi_;
std::vector<int> cl_layer_;
std::vector<int> cl_ncells_;
std::vector<std::vector<unsigned>> cl_cells_;
std::vector<int> cl_subdet_;
std::vector<int> cl_cells_n_;
std::vector<std::vector<uint32_t>> cl_cells_id_;
std::vector<uint32_t> cl_multicluster_id_;
std::vector<float> cl_multicluster_pt_;

};

Expand All @@ -43,23 +48,29 @@ DEFINE_EDM_PLUGIN(HGCalTriggerNtupleFactory,
HGCalTriggerNtupleHGCClusters::
HGCalTriggerNtupleHGCClusters(const edm::ParameterSet& conf):HGCalTriggerNtupleBase(conf)
{
filter_clusters_in_multiclusters_ = conf.getParameter<bool>("FilterClustersInMulticlusters");
}

void
HGCalTriggerNtupleHGCClusters::
initialize(TTree& tree, const edm::ParameterSet& conf, edm::ConsumesCollector&& collector)
{
clusters_token_ = collector.consumes<l1t::HGCalClusterBxCollection>(conf.getParameter<edm::InputTag>("Clusters"));
multiclusters_token_ = collector.consumes<l1t::HGCalMulticlusterBxCollection>(conf.getParameter<edm::InputTag>("Multiclusters"));

tree.Branch("cl_n", &cl_n_, "cl_n/I");
tree.Branch("cl_id", &cl_id_);
tree.Branch("cl_mipPt", &cl_mipPt_);
tree.Branch("cl_pt", &cl_pt_);
tree.Branch("cl_energy", &cl_energy_);
tree.Branch("cl_eta", &cl_eta_);
tree.Branch("cl_phi", &cl_phi_);
tree.Branch("cl_layer", &cl_layer_);
tree.Branch("cl_ncells", &cl_ncells_);
tree.Branch("cl_cells", &cl_cells_);
tree.Branch("cl_subdet", &cl_subdet_);
tree.Branch("cl_cells_n", &cl_cells_n_);
tree.Branch("cl_cells_id", &cl_cells_id_);
tree.Branch("cl_multicluster_id", &cl_multicluster_id_);
tree.Branch("cl_multicluster_pt", &cl_multicluster_pt_);
}

void
Expand All @@ -71,28 +82,50 @@ fill(const edm::Event& e, const edm::EventSetup& es)
edm::Handle<l1t::HGCalClusterBxCollection> clusters_h;
e.getByToken(clusters_token_, clusters_h);
const l1t::HGCalClusterBxCollection& clusters = *clusters_h;
edm::Handle<l1t::HGCalMulticlusterBxCollection> multiclusters_h;
e.getByToken(multiclusters_token_, multiclusters_h);
const l1t::HGCalMulticlusterBxCollection& multiclusters = *multiclusters_h;

// retrieve geometry
edm::ESHandle<HGCalTriggerGeometryBase> geometry;
es.get<CaloGeometryRecord>().get(geometry);

// Associate cells to clusters
std::unordered_map<uint32_t, l1t::HGCalMulticlusterBxCollection::const_iterator> cluster2multicluster;
for(auto mcl_itr=multiclusters.begin(0); mcl_itr!=multiclusters.end(0); mcl_itr++)
{
// loop on 2D clusters inside 3D clusters
for(const auto& cl_ptr : mcl_itr->constituents())
{
cluster2multicluster.emplace(cl_ptr->detId(), mcl_itr);
}
}

clear();
for(auto cl_itr=clusters.begin(0); cl_itr!=clusters.end(0); cl_itr++)
{
auto mcl_itr = cluster2multicluster.find(cl_itr->detId());
uint32_t mcl_id = (mcl_itr!=cluster2multicluster.end() ? mcl_itr->second->detId() : 0);
float mcl_pt = (mcl_itr!=cluster2multicluster.end() ? mcl_itr->second->pt() : 0.);
if(filter_clusters_in_multiclusters_ && mcl_id==0) continue;
cl_n_++;
cl_mipPt_.emplace_back(cl_itr->mipPt());
// physical values
cl_pt_.emplace_back(cl_itr->pt());
cl_energy_.emplace_back(cl_itr->energy());
cl_eta_.emplace_back(cl_itr->eta());
cl_phi_.emplace_back(cl_itr->phi());
cl_id_.emplace_back(cl_itr->detId());
cl_layer_.emplace_back(cl_itr->layer());
cl_ncells_.emplace_back(cl_itr->constituents().size());
cl_subdet_.emplace_back(cl_itr->subdetId());
cl_cells_n_.emplace_back(cl_itr->constituents().size());
// Retrieve indices of trigger cells inside cluster
cl_cells_.emplace_back(cl_itr->constituents().size());
cl_cells_id_.emplace_back(cl_itr->constituents().size());
std::transform(cl_itr->constituents_begin(), cl_itr->constituents_end(),
cl_cells_.back().begin(), [](const edm::Ptr<l1t::HGCalTriggerCell>& tc){return tc.key();}
cl_cells_id_.back().begin(), [](const edm::Ptr<l1t::HGCalTriggerCell>& tc){return tc->detId();}
);
cl_multicluster_id_.emplace_back(mcl_id);
cl_multicluster_pt_.emplace_back(mcl_pt);
}
}

Expand All @@ -102,13 +135,18 @@ HGCalTriggerNtupleHGCClusters::
clear()
{
cl_n_ = 0;
cl_id_.clear();
cl_mipPt_.clear();
cl_pt_.clear();
cl_energy_.clear();
cl_eta_.clear();
cl_phi_.clear();
cl_layer_.clear();
cl_ncells_.clear();
cl_cells_.clear();
cl_subdet_.clear();
cl_cells_n_.clear();
cl_cells_id_.clear();
cl_multicluster_id_.clear();
cl_multicluster_pt_.clear();
}


Expand Down
Expand Up @@ -21,11 +21,14 @@ class HGCalTriggerNtupleHGCMulticlusters : public HGCalTriggerNtupleBase
edm::EDGetToken multiclusters_token_;

int cl3d_n_ ;
std::vector<uint32_t> cl3d_id_;
std::vector<float> cl3d_pt_;
std::vector<float> cl3d_energy_;
std::vector<float> cl3d_eta_;
std::vector<float> cl3d_phi_;
std::vector<int> cl3d_nclu_;
std::vector<int> cl3d_clusters_n_;
std::vector<std::vector<uint32_t>> cl3d_clusters_id_;
// cluster shower shapes
std::vector<int> cl3d_showerlength_;
std::vector<int> cl3d_firstlayer_;
std::vector<float> cl3d_seetot_;
Expand All @@ -36,7 +39,6 @@ class HGCalTriggerNtupleHGCMulticlusters : public HGCalTriggerNtupleBase
std::vector<float> cl3d_srrtot_;
std::vector<float> cl3d_srrmax_;
std::vector<float> cl3d_emaxe_;
std::vector<std::vector<unsigned>> cl3d_clusters_;
};

DEFINE_EDM_PLUGIN(HGCalTriggerNtupleFactory,
Expand All @@ -56,11 +58,13 @@ initialize(TTree& tree, const edm::ParameterSet& conf, edm::ConsumesCollector&&
multiclusters_token_ = collector.consumes<l1t::HGCalMulticlusterBxCollection>(conf.getParameter<edm::InputTag>("Multiclusters"));

tree.Branch("cl3d_n", &cl3d_n_, "cl3d_n/I");
tree.Branch("cl3d_id", &cl3d_id_);
tree.Branch("cl3d_pt", &cl3d_pt_);
tree.Branch("cl3d_energy", &cl3d_energy_);
tree.Branch("cl3d_eta", &cl3d_eta_);
tree.Branch("cl3d_phi", &cl3d_phi_);
tree.Branch("cl3d_nclu", &cl3d_nclu_);
tree.Branch("cl3d_clusters_n", &cl3d_clusters_n_);
tree.Branch("cl3d_clusters_id", &cl3d_clusters_id_);
tree.Branch("cl3d_showerlength", &cl3d_showerlength_);
tree.Branch("cl3d_firstlayer", &cl3d_firstlayer_);
tree.Branch("cl3d_seetot", &cl3d_seetot_);
Expand All @@ -70,8 +74,7 @@ initialize(TTree& tree, const edm::ParameterSet& conf, edm::ConsumesCollector&&
tree.Branch("cl3d_szz", &cl3d_szz_);
tree.Branch("cl3d_srrtot", &cl3d_srrtot_);
tree.Branch("cl3d_srrmax", &cl3d_srrmax_);
tree.Branch("cl3d_emaxe", &cl3d_emaxe_);
tree.Branch("cl3d_clusters", &cl3d_clusters_);
tree.Branch("cl3d_emaxe", &cl3d_emaxe_);

}

Expand All @@ -93,12 +96,13 @@ fill(const edm::Event& e, const edm::EventSetup& es)
for(auto cl3d_itr=multiclusters.begin(0); cl3d_itr!=multiclusters.end(0); cl3d_itr++)
{
cl3d_n_++;
cl3d_id_.emplace_back(cl3d_itr->detId());
// physical values
cl3d_pt_.emplace_back(cl3d_itr->pt());
cl3d_energy_.emplace_back(cl3d_itr->energy());
cl3d_eta_.emplace_back(cl3d_itr->eta());
cl3d_phi_.emplace_back(cl3d_itr->phi());
cl3d_nclu_.emplace_back(cl3d_itr->constituents().size());
cl3d_clusters_n_.emplace_back(cl3d_itr->constituents().size());
cl3d_showerlength_.emplace_back(cl3d_itr->showerLength());
cl3d_firstlayer_.emplace_back(cl3d_itr->firstLayer());
cl3d_seetot_.emplace_back(cl3d_itr->sigmaEtaEtaTot());
Expand All @@ -111,9 +115,9 @@ fill(const edm::Event& e, const edm::EventSetup& es)
cl3d_emaxe_.emplace_back(cl3d_itr->eMax()/cl3d_itr->energy());

// Retrieve indices of trigger cells inside cluster
cl3d_clusters_.emplace_back(cl3d_itr->constituents().size());
cl3d_clusters_id_.emplace_back(cl3d_itr->constituents().size());
std::transform(cl3d_itr->constituents_begin(), cl3d_itr->constituents_end(),
cl3d_clusters_.back().begin(), [](const edm::Ptr<l1t::HGCalCluster>& cl){return cl.key();}
cl3d_clusters_id_.back().begin(), [](const edm::Ptr<l1t::HGCalCluster>& cl){return cl->detId();}
);
}
}
Expand All @@ -124,11 +128,13 @@ HGCalTriggerNtupleHGCMulticlusters::
clear()
{
cl3d_n_ = 0;
cl3d_id_.clear();
cl3d_pt_.clear();
cl3d_energy_.clear();
cl3d_eta_.clear();
cl3d_phi_.clear();
cl3d_nclu_.clear();
cl3d_clusters_n_.clear();
cl3d_clusters_id_.clear();
cl3d_showerlength_.clear();
cl3d_firstlayer_.clear();
cl3d_seetot_.clear();
Expand All @@ -139,8 +145,6 @@ clear()
cl3d_srrtot_.clear();
cl3d_srrmax_.clear();
cl3d_emaxe_.clear();
cl3d_clusters_.clear();

}


Expand Down

0 comments on commit 481009f

Please sign in to comment.