From e460f6f605ff0723ffe595a93703184f44df0ade Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 08:52:59 +0200 Subject: [PATCH 01/45] Ask geographicalId() directly from TransientTrackingRecHit. CPU performance improvement, results stayed the same. --- .../PixelTriplets/src/QuadrupletSeedMerger.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 766bd837a8bc6..6764e91c626e7 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -570,7 +570,7 @@ bool QuadrupletSeedMerger::isTripletsShareHitsOnLayers( const SeedingHitSet& fir { // first triplet if( ! firstTriplet[index]->isValid() ) return false; // catch invalid TTRH pointers (tbd: erase triplet) bool firsthit(false); // Don't look in second layer if found in first - DetId const& thisDetId = firstTriplet[index]->hit()->geographicalId(); + DetId const& thisDetId = firstTriplet[index]->geographicalId(); if( ! isSuccess1[0] ) { // first triplet on shared layer 1 if( shared1.isContainsDetector( thisDetId, tTopo ) ) { @@ -593,7 +593,7 @@ bool QuadrupletSeedMerger::isTripletsShareHitsOnLayers( const SeedingHitSet& fir { // second triplet if( ! secondTriplet[index]->isValid() ) { return false; } // catch invalid TTRH pointers (tbd: erase triplet) bool firsthit(false); // Don't look in second layer if found in first - DetId const& thisDetId = secondTriplet[index]->hit()->geographicalId(); + DetId const& thisDetId = secondTriplet[index]->geographicalId(); if( ! isSuccess2[0] ) { // second triplet on shared layer 1 if( shared1.isContainsDetector( thisDetId, tTopo ) ) { @@ -644,13 +644,13 @@ bool QuadrupletSeedMerger::isMergeableHitsInTriplets( const SeedingHitSet& first for( unsigned int index1 = 0; index1 < 3; ++index1 ) { { // first triplet on non-shared layer 1 - DetId const& aDetId = firstTriplet[index1]->hit()->geographicalId(); + DetId const& aDetId = firstTriplet[index1]->geographicalId(); if( nonShared1.isContainsDetector( aDetId, tTopo ) ) { // look for hit in other (second) triplet on other layer for( unsigned int index2 = 0; index2 < 3; ++index2 ) { - DetId const& anotherDetId = secondTriplet[index2]->hit()->geographicalId(); + DetId const& anotherDetId = secondTriplet[index2]->geographicalId(); if( nonShared2.isContainsDetector( anotherDetId, tTopo ) ) { // ok! @@ -666,13 +666,13 @@ bool QuadrupletSeedMerger::isMergeableHitsInTriplets( const SeedingHitSet& first // and vice versa.. { // second triplet on non-shared layer 1 - DetId const& aDetId = secondTriplet[index1]->hit()->geographicalId(); + DetId const& aDetId = secondTriplet[index1]->geographicalId(); if( nonShared1.isContainsDetector( aDetId, tTopo ) ) { // look for hit in other (second) triplet on other layer for( unsigned int index2 = 0; index2 < 3; ++index2 ) { - DetId const& anotherDetId = firstTriplet[index2]->hit()->geographicalId(); + DetId const& anotherDetId = firstTriplet[index2]->geographicalId(); if( nonShared2.isContainsDetector( anotherDetId, tTopo ) ) { // ok! From 32735de10ceb5f57e3dd111dbf2cf33daf3875bf Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 09:00:42 +0200 Subject: [PATCH 02/45] Require triplets to share two hits before inserting them to list of triplet pairs. CPU performance improvement, results stay the same. --- .../PixelTriplets/src/QuadrupletSeedMerger.cc | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 6764e91c626e7..0157109ac1789 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -151,6 +151,9 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed std::vector t1List; std::vector t2List; for (unsigned int t1=0; t1hit(), tr1[1]->hit(), tr1[2]->hit()}; + for (unsigned int t2=t1+1; t2 0.05 ) continue; @@ -158,6 +161,37 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed if( (temp > 0.15) && (temp <6.133185) ) { continue; } + + // Ensure here that the triplet pairs share two hits. + const SeedingHitSet& tr2 = tripletCache[t2]; + const TrackingRecHit *tr2h[3] = {tr2[0]->hit(), tr2[1]->hit(), tr2[2]->hit()}; + + // If neither of first two hits in tr1 are found from tr2, this + // pair can be skipped + int equalHits=0; + for(unsigned int i=0; i<2; ++i) { + for(unsigned int j=0; j<3; ++j) { + if(isEqual(tr1h[i], tr2h[j])) { + ++equalHits; + break; + } + } + } + if(equalHits == 0) + continue; + // If, after including the third hit of tr1, number of equal + // hits is not 2, this pair can be skipped + if(equalHits != 2) { + for(unsigned int j=0; j<3; ++j) { + if(isEqual(tr1h[2], tr2h[j])) { + ++equalHits; + break; + } + } + if(equalHits != 2) + continue; + } + t1List.push_back(t1); t2List.push_back(t2); } @@ -400,7 +434,7 @@ std::pair QuadrupletSeedMerger::calculatePhiEta( SeedingHitSet co const double z2 = p2.z(); const double phi = atan2( x2 - x1, y2 -y1 ); - const double eta = acos( (z2 - z1) / sqrt( pow( x2 - x1, 2. ) + pow( y2 - y1, 2. ) + pow( z2 - z1, 2. ) ) ); + const double eta = acos( (z2 - z1) / sqrt( pow( x2 - x1, 2. ) + pow( y2 - y1, 2. ) + pow( z2 - z1, 2. ) ) ); // this is theta angle in reality std::pair retVal; retVal=std::make_pair (phi,eta); From c8cc2165fb8e8f56ae2693814d44ce96ccdb1734 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 09:09:46 +0200 Subject: [PATCH 03/45] Use k-d tree for search of compatible triplets. CPU performance improvement, results stay the same. --- .../PixelTriplets/src/QuadrupletSeedMerger.cc | 80 +++++++++++++------ 1 file changed, 54 insertions(+), 26 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 0157109ac1789..0becba8d29574 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -1,8 +1,14 @@ - #include "RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h" +#include "RecoPixelVertexing/PixelTriplets/plugins/KDTreeLinkerAlgo.h" +#include "RecoPixelVertexing/PixelTriplets/plugins/KDTreeLinkerTools.h" #include "DataFormats/TrackerCommon/interface/TrackerTopology.h" + +#include "DataFormats/GeometryVector/interface/Pi.h" + #include +#include +#include /*** @@ -131,36 +137,49 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed std::pair sharedHits; std::pair nonSharedHits; - //std::vector phiEtaClose(nInputTriplets*nInputTriplets,true); - - // for (unsigned int t1=0; t1 0.05 ) { - // phiEtaClose[t1*nInputTriplets+t2]=false; - // phiEtaClose[t2*nInputTriplets+t1]=false; - // continue; - // } - // double temp = fabs( phiEtaCache[t1].first - phiEtaCache[t2].first ); - // if( (temp > 0.15) && (temp <6.133185) ) { - //phiEtaClose[t1*nInputTriplets+t2]=false; - //phiEtaClose[t2*nInputTriplets+t1]=false; - // } - //} - //} - + // k-d tree, indices are (th)eta, phi + // build the tree + std::vector > nodes; // re-use for searching too + nodes.reserve(2*nInputTriplets); + KDTreeLinkerAlgo kdtree; + double minEta=1e10, maxEta=-1e10; + for(unsigned int it=0; it < nInputTriplets; ++it) { + double phi = phiEtaCache[it].first; + double eta = phiEtaCache[it].second; + nodes.push_back(KDTreeNodeInfo(it, eta, phi)); + minEta = std::min(minEta, eta); + maxEta = std::max(maxEta, eta); + + // to wrap all points in phi + // if(phi < 0) phi += twoPi(); else phi -= twoPi(); + double twoPi = std::copysign(Geom::twoPi(), phi); + nodes.push_back(KDTreeNodeInfo(it, eta, phi-twoPi)); + } + KDTreeBox kdEtaPhi(minEta-0.01, maxEta+0.01, -1*Geom::twoPi(), Geom::twoPi()); + kdtree.build(nodes, kdEtaPhi); + nodes.clear(); + + // loop over triplets, search for close-by triplets by using the k-d tree std::vector t1List; std::vector t2List; - for (unsigned int t1=0; t1 t2Tmp; // temporary to sort t2's before insertion to t2List + for(unsigned int t1=0; t1hit(), tr1[1]->hit(), tr1[2]->hit()}; - for (unsigned int t2=t1+1; t2 0.05 ) - continue; - double temp = fabs( phiEtaCache[t1].first - phiEtaCache[t2].first ); - if( (temp > 0.15) && (temp <6.133185) ) { - continue; - } + for(size_t i=0; i= t2) + continue; // Ensure here that the triplet pairs share two hits. const SeedingHitSet& tr2 = tripletCache[t2]; @@ -192,10 +211,19 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed continue; } + t2Tmp.push_back(t2); + } + + // Sort to increasing order in t2 in order to get exactly same result as before + std::sort(t2Tmp.begin(), t2Tmp.end()); + for(unsigned int t2: t2Tmp) { t1List.push_back(t1); t2List.push_back(t2); } + t2Tmp.clear(); } + nodes.clear(); + for( ctfseeding::SeedingLayerSets::const_iterator lsIt = theLayerSets_.begin(); lsIt < theLayerSets_.end(); ++lsIt ) { From 8aaf25409e0dc32f3fd716791acad8a209053bbf Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 09:14:48 +0200 Subject: [PATCH 04/45] Identify the (non-)shared hits of triplets already when requiring two hits being shared. CPU performance improvement, results stay the same. --- .../interface/QuadrupletSeedMerger.h | 21 +- .../PixelTriplets/src/QuadrupletSeedMerger.cc | 228 +++++------------- 2 files changed, 68 insertions(+), 181 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h index c3d1aa1af11f8..38c38fc09ee34 100644 --- a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h +++ b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/Event.h" @@ -107,26 +108,6 @@ class QuadrupletSeedMerger { // bool isValidQuadruplet( const SeedingHitSet&, const std::vector& ) const; -bool isTripletsShareHitsOnLayers( const SeedingHitSet& firstTriplet, const SeedingHitSet& secondTriplet, - const SeedMergerPixelLayer &share1, const SeedMergerPixelLayer &share2, - std::pair& hits, - const TrackerTopology *tTopo) const; - -//bool isTripletsShareHitsOnLayers( const SeedingHitSet&, const SeedingHitSet&, -// const std::pair&, -// std::pair& ) const; -// -// bool isMergeableHitsInTriplets( const SeedingHitSet&, const SeedingHitSet&, -// const std::pair&, -// std::pair& ) const; - -bool isMergeableHitsInTriplets( const SeedingHitSet& firstTriplet, const SeedingHitSet& secondTriplet, - const SeedMergerPixelLayer &nonShared1, const SeedMergerPixelLayer &nonShared2, - std::pair& hits, - const TrackerTopology *tTopo) const; - - - ctfseeding::SeedingLayerSets theLayerSets_; edm::ESHandle theTrackerGeometry_; edm::ESHandle theTTRHBuilder_; diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 0becba8d29574..78193b1cf50cb 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -30,6 +30,20 @@ QuadrupletSeedMerger ***/ +// Helper functions +namespace { + bool areHitsOnLayers(const SeedMergerPixelLayer& layer1, const SeedMergerPixelLayer& layer2, + const std::pair& hits, + const TrackerTopology *tTopo) { + DetId firstHitId = hits.first->geographicalId(); + DetId secondHitId = hits.second->geographicalId(); + return ((layer1.isContainsDetector(firstHitId, tTopo) && + layer2.isContainsDetector(secondHitId, tTopo)) || + (layer1.isContainsDetector(secondHitId, tTopo) && + layer2.isContainsDetector(firstHitId, tTopo))); + } +} + /// @@ -160,9 +174,25 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed nodes.clear(); // loop over triplets, search for close-by triplets by using the k-d tree + // also identify the hits which are shared by triplet pairs, and + // store indices to hits which are not shared std::vector t1List; std::vector t2List; - std::vector t2Tmp; // temporary to sort t2's before insertion to t2List + std::vector t1NonSharedHitList; + std::vector t2NonSharedHitList; + constexpr short sharedToNonShared[7] = {-1, -1, -1, + 2, // 011=3 shared, not shared = 2 + -1, + 1, // 101=5 shared, not shared = 1 + 0}; // 110=6 shared, not shared = 0 + constexpr short nonSharedToShared[3][2] = { + {1, 2}, + {0, 2}, + {0, 1} + }; + + typedef std::tuple T2NonSharedTuple; + std::vector t2Tmp; // temporary to sort t2's before insertion to t2List for(unsigned int t1=0; t1= 0 && t2NonShared >= 0); // against invalid value from sharedToNonShared[] - t2Tmp.push_back(t2); + t2Tmp.emplace_back(t2, t1NonShared, t2NonShared); } // Sort to increasing order in t2 in order to get exactly same result as before - std::sort(t2Tmp.begin(), t2Tmp.end()); - for(unsigned int t2: t2Tmp) { + std::sort(t2Tmp.begin(), t2Tmp.end(), [](const T2NonSharedTuple& a, const T2NonSharedTuple& b){ + return std::get<0>(a) < std::get<0>(b); + }); + for(T2NonSharedTuple& t2tpl: t2Tmp) { t1List.push_back(t1); - t2List.push_back(t2); + t2List.push_back(std::get<0>(t2tpl)); + t1NonSharedHitList.push_back(std::get<1>(t2tpl)); + t2NonSharedHitList.push_back(std::get<2>(t2tpl)); } t2Tmp.clear(); } @@ -254,19 +303,23 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed if (usedTriplets[t1] || usedTriplets[t2] ) continue; - // if ( !phiEtaClose[t1*nInputTriplets+t2] ) continue; + const SeedingHitSet& firstTriplet = tripletCache[t1]; - // do both triplets have shared hits on these two layers? - if( isTripletsShareHitsOnLayers( (tripletCache[t1]), (tripletCache[t2]), - currentLayers[s1], - currentLayers[s2], sharedHits, tTopo ) ) { + short t1NonShared = t1NonSharedHitList[t12]; + sharedHits.first = firstTriplet[nonSharedToShared[t1NonShared][0]]; + sharedHits.second = firstTriplet[nonSharedToShared[t1NonShared][1]]; - // are the remaining hits on different layers? - if( isMergeableHitsInTriplets( (tripletCache[t1]), (tripletCache[t2]), - currentLayers[nonSharedLayerNums[0]], - currentLayers[nonSharedLayerNums[1]], nonSharedHits, tTopo ) ) { + // if ( !phiEtaClose[t1*nInputTriplets+t2] ) continue; + // are the shared hits on these two layers? + if(areHitsOnLayers(currentLayers[s1], currentLayers[s2], sharedHits, tTopo)) { + short t2NonShared = t2NonSharedHitList[t12]; + const SeedingHitSet& secondTriplet = tripletCache[t2]; + nonSharedHits.first = firstTriplet[t1NonShared]; + nonSharedHits.second = secondTriplet[t2NonShared]; + // are the remaining hits on different layers? + if(areHitsOnLayers(currentLayers[nonSharedLayerNums[0]], currentLayers[nonSharedLayerNums[1]], nonSharedHits, tTopo)) { std::vector unsortedHits=mySort(sharedHits.first, sharedHits.second, nonSharedHits.first, @@ -608,153 +661,6 @@ bool QuadrupletSeedMerger::isValidQuadruplet( std::vector& hits, - const TrackerTopology *tTopo ) const { - - bool isSuccess1[2],isSuccess2[2]; - isSuccess1[0]=false; - isSuccess1[1]=false; - isSuccess2[0]=false; - isSuccess2[1]=false; - - std::pair hitsTriplet1, hitsTriplet2; - - // check if firstTriplet and secondTriplet have hits on sharedLayers - for( unsigned int index = 0; index < 3; ++index ) - { // first triplet - if( ! firstTriplet[index]->isValid() ) return false; // catch invalid TTRH pointers (tbd: erase triplet) - bool firsthit(false); // Don't look in second layer if found in first - DetId const& thisDetId = firstTriplet[index]->geographicalId(); - - if( ! isSuccess1[0] ) { // first triplet on shared layer 1 - if( shared1.isContainsDetector( thisDetId, tTopo ) ) { - isSuccess1[0] = true; - firsthit = true; - hitsTriplet1.first = firstTriplet[index]; - } - } - - if ( (! firsthit) && (! isSuccess1[1] ) && ((index !=3) || isSuccess1[0]) ) { // first triplet on shared layer 2 - if( shared2.isContainsDetector( thisDetId, tTopo ) ) { - isSuccess1[1] = true; - hitsTriplet1.second = firstTriplet[index]; - } - } - } - - if ( isSuccess1[0] && isSuccess1[1]) { // Don't do second triplet if first unsuccessful - for( unsigned int index = 0; index < 3; ++index ) - { // second triplet - if( ! secondTriplet[index]->isValid() ) { return false; } // catch invalid TTRH pointers (tbd: erase triplet) - bool firsthit(false); // Don't look in second layer if found in first - DetId const& thisDetId = secondTriplet[index]->geographicalId(); - - if( ! isSuccess2[0] ) { // second triplet on shared layer 1 - if( shared1.isContainsDetector( thisDetId, tTopo ) ) { - isSuccess2[0] = true; - firsthit = true; - hitsTriplet2.first = secondTriplet[index]; - } - } - - if( (! firsthit) && (! isSuccess2[1]) && ((index !=3) || isSuccess2[0]) ) { // second triplet on shared layer 2 - if( shared2.isContainsDetector( thisDetId, tTopo ) ) { - isSuccess2[1] = true; - hitsTriplet2.second = secondTriplet[index]; - } - } - } - - // check if these hits are pairwise equal - if( isSuccess2[0] && isSuccess2[1] ) { - if( isEqual( hitsTriplet1.first->hit(), hitsTriplet2.first->hit() ) && - isEqual( hitsTriplet1.second->hit(), hitsTriplet2.second->hit() ) ) { - - // copy to output, take triplet1 since they're equal anyway - hits.first = hitsTriplet1.first; - hits.second = hitsTriplet1.second; - return true; - } - } - } - - // empty output, careful - return false; - -} - - - -/// -/// check if the triplets have hits on the nonSharedLayers -/// triplet1 on layer1 && triplet2 on layer2, or vice versa, -/// and return the hits on those layers (unsorted) -bool QuadrupletSeedMerger::isMergeableHitsInTriplets( const SeedingHitSet& firstTriplet, const SeedingHitSet& secondTriplet, - const SeedMergerPixelLayer &nonShared1, const SeedMergerPixelLayer &nonShared2, - std::pair& hits, - const TrackerTopology *tTopo ) const { - - // check if firstTriplet and secondTriplet have hits on sharedLayers - for( unsigned int index1 = 0; index1 < 3; ++index1 ) { - - { // first triplet on non-shared layer 1 - DetId const& aDetId = firstTriplet[index1]->geographicalId(); - if( nonShared1.isContainsDetector( aDetId, tTopo ) ) { - - // look for hit in other (second) triplet on other layer - for( unsigned int index2 = 0; index2 < 3; ++index2 ) { - - DetId const& anotherDetId = secondTriplet[index2]->geographicalId(); - if( nonShared2.isContainsDetector( anotherDetId, tTopo ) ) { - - // ok! - hits.first = firstTriplet[index1]; - hits.second = secondTriplet[index2]; - return true; - - } - } - } - } - - // and vice versa.. - - { // second triplet on non-shared layer 1 - DetId const& aDetId = secondTriplet[index1]->geographicalId(); - if( nonShared1.isContainsDetector( aDetId, tTopo ) ) { - - // look for hit in other (second) triplet on other layer - for( unsigned int index2 = 0; index2 < 3; ++index2 ) { - - DetId const& anotherDetId = firstTriplet[index2]->geographicalId(); - if( nonShared2.isContainsDetector( anotherDetId, tTopo ) ) { - - // ok! - hits.first = firstTriplet[index1]; - hits.second = secondTriplet[index2]; - return true; - - } - } - } - } - - } // for( index1 - - return false; - -} - - - /// /// /// From 09b55e19419bbc763ddfc2cb050f0d7455f77365 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 09:16:44 +0200 Subject: [PATCH 05/45] Removed one repeated std::vector allocation+copy in mySort(). CPU performance improvement, results stay the same. --- .../interface/QuadrupletSeedMerger.h | 13 +++------ .../PixelTriplets/src/QuadrupletSeedMerger.cc | 28 ++++--------------- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h index 38c38fc09ee34..4fbccab48d5c3 100644 --- a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h +++ b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/Event.h" @@ -96,15 +96,10 @@ class QuadrupletSeedMerger { void setTTRHBuilderLabel( std::string ); private: + typedef std::array QuadrupletHits; + void mySort(QuadrupletHits& unsortedHits); - std::vector mySort(TransientTrackingRecHit::ConstRecHitPointer &h1, - TransientTrackingRecHit::ConstRecHitPointer &h2, - TransientTrackingRecHit::ConstRecHitPointer &h3, - TransientTrackingRecHit::ConstRecHitPointer &h4); - - - bool isValidQuadruplet( std::vector &quadruplet, const std::vector& layers, - const TrackerTopology *tTopo) const; + bool isValidQuadruplet(const QuadrupletHits& quadruplet, const std::vector& layers, const TrackerTopology *tTopo) const; // bool isValidQuadruplet( const SeedingHitSet&, const std::vector& ) const; diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 78193b1cf50cb..1e9fd66c931af 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -273,7 +273,6 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed } nodes.clear(); - for( ctfseeding::SeedingLayerSets::const_iterator lsIt = theLayerSets_.begin(); lsIt < theLayerSets_.end(); ++lsIt ) { // fill a vector with the layers in this set @@ -309,8 +308,6 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed sharedHits.first = firstTriplet[nonSharedToShared[t1NonShared][0]]; sharedHits.second = firstTriplet[nonSharedToShared[t1NonShared][1]]; - // if ( !phiEtaClose[t1*nInputTriplets+t2] ) continue; - // are the shared hits on these two layers? if(areHitsOnLayers(currentLayers[s1], currentLayers[s2], sharedHits, tTopo)) { short t2NonShared = t2NonSharedHitList[t12]; @@ -320,10 +317,10 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed // are the remaining hits on different layers? if(areHitsOnLayers(currentLayers[nonSharedLayerNums[0]], currentLayers[nonSharedLayerNums[1]], nonSharedHits, tTopo)) { - std::vector unsortedHits=mySort(sharedHits.first, - sharedHits.second, - nonSharedHits.first, - nonSharedHits.second); + QuadrupletHits unsortedHits{ {sharedHits.first, sharedHits.second, + nonSharedHits.first, nonSharedHits.second} }; + + mySort(unsortedHits); //start here with old addtoresult if( isValidQuadruplet( unsortedHits, currentLayers, tTopo ) ) { @@ -637,8 +634,7 @@ void QuadrupletSeedMerger::setAddRemainingTriplets( bool isAddTriplets ) { /// 1. after sorting, hits must be on layers according to the /// order given in PixelSeedMergerQuadruplets (from cfg) /// -bool QuadrupletSeedMerger::isValidQuadruplet( std::vector &quadruplet, const std::vector& layers, - const TrackerTopology *tTopo) const { +bool QuadrupletSeedMerger::isValidQuadruplet(const QuadrupletHits &quadruplet, const std::vector& layers, const TrackerTopology *tTopo) const { const unsigned int quadrupletSize = quadruplet.size(); @@ -758,18 +754,7 @@ bool SeedMergerPixelLayer::isContainsDetector( const DetId& detId, const Tracker } -std::vector QuadrupletSeedMerger::mySort(TransientTrackingRecHit::ConstRecHitPointer &h1, - TransientTrackingRecHit::ConstRecHitPointer &h2, - TransientTrackingRecHit::ConstRecHitPointer &h3, - TransientTrackingRecHit::ConstRecHitPointer &h4) { - // create an intermediate vector with all hits - std::vector unsortedHits; - unsortedHits.reserve(4); - unsortedHits.push_back( h1); - unsortedHits.push_back( h2); - unsortedHits.push_back( h3); - unsortedHits.push_back( h4); - +void QuadrupletSeedMerger::mySort(std::array& unsortedHits) { float radiiSq[4]; for ( unsigned int iR=0; iR<4; iR++){ const GeomDet* geom1=theTrackerGeometry_->idToDet( unsortedHits[iR]->hit()->geographicalId() ); @@ -790,7 +775,6 @@ std::vector QuadrupletSeedMerger::m } } } - return unsortedHits; } From b2e08975c46da0cf2e2c3abe3e0234a4e69fd1e1 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 15 Jul 2013 09:18:47 +0200 Subject: [PATCH 06/45] Removed the rest of relevant TransientTrackingRecHit::hit() calls. CPU performance improvement, results stay the same. --- .../interface/QuadrupletSeedMerger.h | 1 - .../PixelTriplets/src/QuadrupletSeedMerger.cc | 51 +++++-------------- 2 files changed, 14 insertions(+), 38 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h index 4fbccab48d5c3..aa38dad5cda93 100644 --- a/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h +++ b/RecoPixelVertexing/PixelTriplets/interface/QuadrupletSeedMerger.h @@ -85,7 +85,6 @@ class QuadrupletSeedMerger { //const std::vector mergeTriplets( const OrderedSeedingHits&, const edm::EventSetup& ); const OrderedSeedingHits& mergeTriplets( const OrderedSeedingHits&, const edm::EventSetup& ); const TrajectorySeedCollection mergeTriplets( const TrajectorySeedCollection&, const TrackingRegion&, const edm::EventSetup&, const edm::ParameterSet& ); - bool isEqual( const TrackingRecHit*, const TrackingRecHit* ) const; std::pair calculatePhiEta( SeedingHitSet const& ) const; void printHit( const TrackingRecHit* ) const; void printHit( const TransientTrackingRecHit::ConstRecHitPointer& ) const; diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index 1e9fd66c931af..f97312d75336b 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -42,6 +42,15 @@ namespace { (layer1.isContainsDetector(secondHitId, tTopo) && layer2.isContainsDetector(firstHitId, tTopo))); } + + bool areHitsEqual(const TransientTrackingRecHit& hit1, const TransientTrackingRecHit& hit2) { + constexpr double epsilon = 0.00001; + if(hit1.geographicalId() != hit2.geographicalId()) + return false; + + LocalPoint lp1 = hit1.localPosition(), lp2 = hit2.localPosition(); + return std::abs(lp1.x() - lp2.x()) < epsilon && std::abs(lp1.y() - lp2.y()) < epsilon; + } } @@ -204,7 +213,6 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed continue; const SeedingHitSet& tr1 = tripletCache[t1]; - const TrackingRecHit *tr1h[3] = {tr1[0]->hit(), tr1[1]->hit(), tr1[2]->hit()}; for(size_t i=0; ihit(), tr2[1]->hit(), tr2[2]->hit()}; // If neither of first two hits in tr1 are found from tr2, this // pair can be skipped @@ -226,7 +233,7 @@ const OrderedSeedingHits& QuadrupletSeedMerger::mergeTriplets( const OrderedSeed unsigned int t2Shared = 0; for(unsigned int i=0; i<2; ++i) { for(unsigned int j=0; j<3; ++j) { - if(isEqual(tr1h[i], tr2h[j])) { + if(areHitsEqual(*tr1[i], *tr2[j])) { t1Shared |= (1<geographicalId(), det2 = hit2->geographicalId(); - if (det1 == det2) { - LocalPoint lp1 = hit1->localPosition(), lp2 = hit2->localPosition(); - if( ( fabs( lp1.x() - lp2.x() ) < epsilon ) && - ( fabs( lp1.y() - lp2.y() ) < epsilon ) ) { - return true; - } - - } - return false; - -} - - - /// /// /// @@ -495,14 +479,8 @@ std::pair QuadrupletSeedMerger::calculatePhiEta( SeedingHitSet co // throw; // tbr. // } - const TrackingRecHit* hit1 = nTuplet[0]->hit(); - const GeomDet* geomDet1 = theTrackerGeometry_->idToDet( hit1->geographicalId() ); - - const TrackingRecHit* hit2 = nTuplet[1]->hit(); - const GeomDet* geomDet2 = theTrackerGeometry_->idToDet( hit2->geographicalId() ); - - GlobalPoint p1=geomDet1->toGlobal( hit1->localPosition() ); - GlobalPoint p2=geomDet2->toGlobal( hit2->localPosition() ); + GlobalPoint p1 = nTuplet[0]->globalPosition(); + GlobalPoint p2 = nTuplet[1]->globalPosition(); const double x1 = p1.x(); const double x2 = p2.x(); @@ -757,8 +735,7 @@ bool SeedMergerPixelLayer::isContainsDetector( const DetId& detId, const Tracker void QuadrupletSeedMerger::mySort(std::array& unsortedHits) { float radiiSq[4]; for ( unsigned int iR=0; iR<4; iR++){ - const GeomDet* geom1=theTrackerGeometry_->idToDet( unsortedHits[iR]->hit()->geographicalId() ); - GlobalPoint p1=geom1->toGlobal( unsortedHits[iR]->hit()->localPosition() ); + GlobalPoint p1 = unsortedHits[iR]->globalPosition(); radiiSq[iR]=( p1.x()*p1.x()+p1.y()*p1.y()); // no need to take the sqrt } TransientTrackingRecHit::ConstRecHitPointer tempRHP; From cfb8cb090a066488e38fcf3f817ab2b66440ec88 Mon Sep 17 00:00:00 2001 From: Salavat Date: Wed, 9 Oct 2013 18:14:49 +0200 Subject: [PATCH 07/45] fix omission darkening omission in HcalDigitizer for 620SLHC2 --- SimCalorimetry/HcalSimProducers/BuildFile.xml | 1 + .../interface/HcalDigitizer.h | 9 ++++ .../python/hcalUnsuppressedDigis_cfi.py | 5 +- .../HcalSimProducers/src/HcalDigitizer.cc | 50 +++++++++++++++++-- 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/SimCalorimetry/HcalSimProducers/BuildFile.xml b/SimCalorimetry/HcalSimProducers/BuildFile.xml index 7a5df0fd4fa26..0906cb516e146 100644 --- a/SimCalorimetry/HcalSimProducers/BuildFile.xml +++ b/SimCalorimetry/HcalSimProducers/BuildFile.xml @@ -4,6 +4,7 @@ + diff --git a/SimCalorimetry/HcalSimProducers/interface/HcalDigitizer.h b/SimCalorimetry/HcalSimProducers/interface/HcalDigitizer.h index c487d4c5873ab..08f8ba4ca7760 100644 --- a/SimCalorimetry/HcalSimProducers/interface/HcalDigitizer.h +++ b/SimCalorimetry/HcalSimProducers/interface/HcalDigitizer.h @@ -13,6 +13,8 @@ #include "Geometry/CaloGeometry/interface/CaloGeometry.h" #include "DataFormats/DetId/interface/DetId.h" #include "FWCore/Framework/interface/Frameworkfwd.h" +#include "DataFormats/HcalCalibObjects/interface/HEDarkening.h" +#include "DataFormats/HcalCalibObjects/interface/HFRecalibration.h" #include @@ -62,6 +64,9 @@ class HcalDigitizer void buildHOSiPMCells(const std::vector& allCells, const edm::EventSetup& eventSetup); + //function to evaluate aging at the digi level + void darkening(std::vector& hcalHits); + /** Reconstruction algorithm*/ typedef CaloTDigitizer HBHEDigitizer; typedef CaloTDigitizer HODigitizer; @@ -130,6 +135,10 @@ class HcalDigitizer std::string hitsProducer_; int theHOSiPMCode; + + double deliveredLumi; + HEDarkening* m_HEDarkening; + HFRecalibration* m_HFRecalibration; }; #endif diff --git a/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py b/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py index b7920a95a1eb5..1b1824b569112 100644 --- a/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py +++ b/SimCalorimetry/HcalSimProducers/python/hcalUnsuppressedDigis_cfi.py @@ -36,7 +36,10 @@ injectTestHits = cms.bool(False), ChangeResponse = cms.bool(False), CorrFactorFile = cms.FileInPath("SimCalorimetry/HcalSimProducers/data/calor_corr01.txt"), - HcalReLabel = HcalReLabel + HcalReLabel = HcalReLabel, + DelivLuminosity = cms.double(0), + HEDarkening = cms.bool(False), + HFDarkening = cms.bool(False) ) #es_cholesky = cms.ESSource("PoolDBESSource", diff --git a/SimCalorimetry/HcalSimProducers/src/HcalDigitizer.cc b/SimCalorimetry/HcalSimProducers/src/HcalDigitizer.cc index e8d013977716f..c992df8b6ea11 100644 --- a/SimCalorimetry/HcalSimProducers/src/HcalDigitizer.cc +++ b/SimCalorimetry/HcalSimProducers/src/HcalDigitizer.cc @@ -35,6 +35,8 @@ #include "CondFormats/HcalObjects/interface/HcalCholeskyMatrices.h" #include #include "Geometry/CaloTopology/interface/HcalTopology.h" +#include "SimDataFormats/CaloTest/interface/HcalTestNumbering.h" +#include "DataFormats/HcalDetId/interface/HcalSubdetector.h" namespace HcalDigitizerImpl { @@ -126,7 +128,10 @@ HcalDigitizer::HcalDigitizer(const edm::ParameterSet& ps) : hbhegeo(true), hogeo(true), hfgeo(true), - theHOSiPMCode(ps.getParameter("ho").getParameter("siPMCode")) + theHOSiPMCode(ps.getParameter("ho").getParameter("siPMCode")), + deliveredLumi(0.), + m_HEDarkening(0), + m_HFRecalibration(0) { bool doNoise = ps.getParameter("doNoise"); bool useOldNoiseHB = ps.getParameter("useOldHB"); @@ -140,6 +145,9 @@ HcalDigitizer::HcalDigitizer(const edm::ParameterSet& ps) : double HOtp = ps.getParameter("HOTuningParameter"); bool doHBHEUpgrade = ps.getParameter("HBHEUpgradeQIE"); bool doHFUpgrade = ps.getParameter("HFUpgradeQIE"); + deliveredLumi = ps.getParameter("DelivLuminosity"); + bool agingFlagHE = ps.getParameter("HEDarkening"); + bool agingFlagHF = ps.getParameter("HFDarkening"); // need to make copies, because they might get different noise generators theHBHEAmplifier = new HcalAmplifier(theParameterMap, doNoise); @@ -316,6 +324,9 @@ HcalDigitizer::HcalDigitizer(const edm::ParameterSet& ps) : if (theHitCorrection!=0) theHitCorrection->setRandomEngine(engine); hitsProducer_ = ps.getParameter("hitsProducer"); + + if(agingFlagHE) m_HEDarkening = new HEDarkening(); + if(agingFlagHF) m_HFRecalibration = new HFRecalibration(); } @@ -433,9 +444,13 @@ void HcalDigitizer::accumulateCaloHits(edm::Handle > const // Step A: pass in inputs, and accumulate digirs if(isHCAL) { std::vector hcalHits = *hcalHandle.product(); + //evaluate darkening before relabeling + if(m_HEDarkening || m_HFRecalibration){ + darkening(hcalHits); + } if (relabel_) { // Relabel PCaloHits - edm::LogInfo("HcalDigitizer") << "Calling Relabller"; + edm::LogInfo("HcalDigitizer") << "Calling Relabeller"; theRelabeller->process(hcalHits); } if(theHitCorrection != 0) { @@ -682,6 +697,35 @@ void HcalDigitizer::buildHOSiPMCells(const std::vector& allCells, const e } } - +void HcalDigitizer::darkening(std::vector& hcalHits){ + + for (unsigned int ii=0; iidegradation(deliveredLumi,ieta,lay-2);//NB:diff. layer count + darkened = true; + } + + //HF darkening - approximate: invert recalibration factor + else if(det==int(HcalForward) && m_HFRecalibration){ + dweight = 1.0/m_HFRecalibration->getCorr(ieta,depth,deliveredLumi); + darkened = true; + } + + //create new hit with darkened energy + //if(darkened) hcalHits[ii] = PCaloHit(hcalHits[ii].energyEM()*dweight,hcalHits[ii].energyHad()*dweight,hcalHits[ii].time(),hcalHits[ii].geantTrackId(),hcalHits[ii].id()); + + //reset hit energy + if(darkened) hcalHits[ii].setEnergy(hcalHits[ii].energy()*dweight); + } + +} From b0b8a25122af59008dd9f8afdcd733ffe996fd6e Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 14 Oct 2013 12:41:53 +0200 Subject: [PATCH 08/45] Change pow(x, 2.) to x*x pow() is supposedly (much) slower, although in the big picture the effect on timing is very small. Physics results should stay the same. --- .../PixelTriplets/src/QuadrupletSeedMerger.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc index f97312d75336b..07b10c14c7fc6 100644 --- a/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc +++ b/RecoPixelVertexing/PixelTriplets/src/QuadrupletSeedMerger.cc @@ -6,10 +6,15 @@ #include "DataFormats/GeometryVector/interface/Pi.h" -#include -#include #include +namespace { + template + constexpr T sqr(T x) { + return x*x; + } +} + /*** QuadrupletSeedMerger @@ -490,7 +495,7 @@ std::pair QuadrupletSeedMerger::calculatePhiEta( SeedingHitSet co const double z2 = p2.z(); const double phi = atan2( x2 - x1, y2 -y1 ); - const double eta = acos( (z2 - z1) / sqrt( pow( x2 - x1, 2. ) + pow( y2 - y1, 2. ) + pow( z2 - z1, 2. ) ) ); // this is theta angle in reality + const double eta = acos( (z2 - z1) / sqrt( sqr( x2 - x1 ) + sqr( y2 - y1 ) + sqr( z2 - z1 ) ) ); // this is theta angle in reality std::pair retVal; retVal=std::make_pair (phi,eta); From 6ee060983602133421310319bbb2d21a902f33cd Mon Sep 17 00:00:00 2001 From: David Date: Tue, 15 Oct 2013 20:54:19 +0200 Subject: [PATCH 09/45] geometry search tracker detid migration --- .../plugins/TrackerRecoGeometryESProducer.cc | 10 +++- .../interface/GeometricSearchTracker.h | 6 ++- .../interface/GeometricSearchTrackerBuilder.h | 5 +- .../TkDetLayers/src/GeometricSearchTracker.cc | 50 ++++++++----------- .../src/GeometricSearchTrackerBuilder.cc | 7 +-- 5 files changed, 43 insertions(+), 35 deletions(-) diff --git a/RecoTracker/GeometryESProducer/plugins/TrackerRecoGeometryESProducer.cc b/RecoTracker/GeometryESProducer/plugins/TrackerRecoGeometryESProducer.cc index 5116b37276057..584f883f5b3f3 100644 --- a/RecoTracker/GeometryESProducer/plugins/TrackerRecoGeometryESProducer.cc +++ b/RecoTracker/GeometryESProducer/plugins/TrackerRecoGeometryESProducer.cc @@ -4,6 +4,7 @@ #include "Geometry/Records/interface/IdealGeometryRecord.h" #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" #include "RecoTracker/TkDetLayers/interface/GeometricSearchTrackerBuilder.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/ESHandle.h" @@ -36,8 +37,15 @@ TrackerRecoGeometryESProducer::produce(const TrackerRecoGeometryRecord & iRecord edm::ESHandle tG; iRecord.getRecord().get( geoLabel, tG ); + + edm::ESHandle tTopoHand; + iRecord.getRecord().get(tTopoHand); + const TrackerTopology *tTopo=tTopoHand.product(); + std::cout << tTopo << " is tTopo\n"; + + GeometricSearchTrackerBuilder builder; - _tracker = boost::shared_ptr(builder.build( tG->trackerDet(), &(*tG) )); + _tracker = boost::shared_ptr(builder.build( tG->trackerDet(), &(*tG), tTopo )); return _tracker; } diff --git a/RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h b/RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h index 2f080b61e6f7c..0a9257353e48b 100644 --- a/RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h +++ b/RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h @@ -5,6 +5,7 @@ #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h" #include "TrackingTools/DetLayers/interface/DetLayerGeometry.h" +class TrackerTopology; /** GeometricSearchTracker implementation * @@ -21,7 +22,8 @@ class GeometricSearchTracker: public DetLayerGeometry { const std::vector& negTec, const std::vector& posPxlFwd, const std::vector& posTid, - const std::vector& posTec); + const std::vector& posTec, + const TrackerTopology *tTopo); virtual ~GeometricSearchTracker(); @@ -69,6 +71,8 @@ class GeometricSearchTracker: public DetLayerGeometry { std::vector thePosPixelForwardLayers; std::vector thePosTidLayers; std::vector thePosTecLayers; + + const TrackerTopology *theTrkTopo; }; diff --git a/RecoTracker/TkDetLayers/interface/GeometricSearchTrackerBuilder.h b/RecoTracker/TkDetLayers/interface/GeometricSearchTrackerBuilder.h index be592ea84648b..5e6fd17462235 100644 --- a/RecoTracker/TkDetLayers/interface/GeometricSearchTrackerBuilder.h +++ b/RecoTracker/TkDetLayers/interface/GeometricSearchTrackerBuilder.h @@ -6,6 +6,8 @@ #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h" #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" +class TrackerTopology; + /** GeometricSearchTrackerBuilder implementation * */ @@ -17,7 +19,8 @@ class GeometricSearchTrackerBuilder { ~GeometricSearchTrackerBuilder() {}; GeometricSearchTracker* build(const GeometricDet* theGeometricTracker, - const TrackerGeometry* theGeomDetGeometry); + const TrackerGeometry* theGeomDetGeometry, + const TrackerTopology* tTopo); }; diff --git a/RecoTracker/TkDetLayers/src/GeometricSearchTracker.cc b/RecoTracker/TkDetLayers/src/GeometricSearchTracker.cc index 1e57c53c6b297..5108a8e6e2466 100644 --- a/RecoTracker/TkDetLayers/src/GeometricSearchTracker.cc +++ b/RecoTracker/TkDetLayers/src/GeometricSearchTracker.cc @@ -1,4 +1,6 @@ #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" + #include "FWCore/MessageLogger/interface/MessageLogger.h" using namespace std; @@ -11,7 +13,8 @@ GeometricSearchTracker::GeometricSearchTracker(const vector& px const vector& negTec, const vector& posPxlFwd, const vector& posTid, - const vector& posTec): + const vector& posTec, + const TrackerTopology *tTopo): thePixelBarrelLayers(pxlBar.begin(),pxlBar.end()), theTibLayers(tib.begin(),tib.end()), theTobLayers(tob.begin(),tob.end()), @@ -20,7 +23,8 @@ GeometricSearchTracker::GeometricSearchTracker(const vector& px theNegTecLayers(negTec.begin(),negTec.end()), thePosPixelForwardLayers(posPxlFwd.begin(),posPxlFwd.end()), thePosTidLayers(posTid.begin(),posTid.end()), - thePosTecLayers(posTec.begin(),posTec.end()) + thePosTecLayers(posTec.begin(),posTec.end()), + theTrkTopo(tTopo) { theBarrelLayers.assign(thePixelBarrelLayers.begin(),thePixelBarrelLayers.end()); theBarrelLayers.insert(theBarrelLayers.end(),theTibLayers.begin(),theTibLayers.end()); @@ -80,12 +84,6 @@ GeometricSearchTracker::~GeometricSearchTracker(){ } -#include "DataFormats/SiPixelDetId/interface/PXBDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXFDetId.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" #include "DataFormats/SiStripDetId/interface/StripSubdetector.h" #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" @@ -94,44 +92,38 @@ GeometricSearchTracker::idToLayer(const DetId& id) const { switch(id.subdetId()) { case StripSubdetector::TIB: - //edm::LogInfo(TkDetLayers) << "TIB layer n: " << TIBDetId(id).layer() ; - return theTibLayers[TIBDetId(id).layer()-1]; + return theTibLayers[theTrkTopo->tibLayer(id)-1]; break; case StripSubdetector::TOB: - //edm::LogInfo(TkDetLayers) << "TOB layer n: " << TOBDetId(id).layer() ; - return theTobLayers[TOBDetId(id).layer()-1]; + return theTobLayers[theTrkTopo->tobLayer(id)-1]; break; case StripSubdetector::TID: - //edm::LogInfo(TkDetLayers) << "TID wheel n: " << TIDDetId(id).wheel() ; - if(TIDDetId(id).side() ==1 ) { - return theNegTidLayers[TIDDetId(id).wheel()-1]; - }else if( TIDDetId(id).side() == 2 ) { - return thePosTidLayers[TIDDetId(id).wheel()-1]; + if(theTrkTopo->tidSide(id) ==1 ) { + return theNegTidLayers[theTrkTopo->tidWheel(id)-1]; + }else if( theTrkTopo->tidSide(id) == 2 ) { + return thePosTidLayers[theTrkTopo->tidWheel(id)-1]; } break; case StripSubdetector::TEC: - //edm::LogInfo(TkDetLayers) << "TEC wheel n: " << TECDetId(id).wheel() ; - if(TECDetId(id).side() ==1 ) { - return theNegTecLayers[TECDetId(id).wheel()-1]; - }else if( TECDetId(id).side() == 2 ) { - return thePosTecLayers[TECDetId(id).wheel()-1]; + if(theTrkTopo->tecSide(id) ==1 ) { + return theNegTecLayers[theTrkTopo->tecWheel(id)-1]; + }else if( theTrkTopo->tecSide(id) == 2 ) { + return thePosTecLayers[theTrkTopo->tecWheel(id)-1]; } break; case PixelSubdetector::PixelBarrel: - //edm::LogInfo(TkDetLayers) << "PixelBarrel layer n: " << PXBDetId(id).layer() ; - return thePixelBarrelLayers[PXBDetId(id).layer()-1]; + return thePixelBarrelLayers[theTrkTopo->pxbLayer(id)-1]; break; case PixelSubdetector::PixelEndcap: - //edm::LogInfo(TkDetLayers) << "PixelEndcap disk n: " << PXFDetId(id).disk() ; - if(PXFDetId(id).side() ==1 ) { - return theNegPixelForwardLayers[PXFDetId(id).disk()-1]; - }else if( PXFDetId(id).side() == 2 ) { - return thePosPixelForwardLayers[PXFDetId(id).disk()-1]; + if(theTrkTopo->pxfSide(id) ==1 ) { + return theNegPixelForwardLayers[theTrkTopo->pxfDisk(id)-1]; + }else if( theTrkTopo->pxfSide(id)==2 ) { + return thePosPixelForwardLayers[theTrkTopo->pxfDisk(id)-1]; } break; diff --git a/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc b/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc index 0f50cba882bba..b66e40794b47d 100644 --- a/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc +++ b/RecoTracker/TkDetLayers/src/GeometricSearchTrackerBuilder.cc @@ -10,7 +10,7 @@ #include "Geometry/TrackerGeometryBuilder/interface/trackerHierarchy.h" #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" - +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "DataFormats/Common/interface/Trie.h" #include @@ -20,7 +20,8 @@ using namespace std; GeometricSearchTracker* GeometricSearchTrackerBuilder::build(const GeometricDet* theGeometricTracker, - const TrackerGeometry* theGeomDetGeometry) + const TrackerGeometry* theGeomDetGeometry, + const TrackerTopology* tTopo) { PixelBarrelLayerBuilder aPixelBarrelLayerBuilder; PixelForwardLayerBuilder aPixelForwardLayerBuilder; @@ -166,5 +167,5 @@ GeometricSearchTrackerBuilder::build(const GeometricDet* theGeometricTracker, return new GeometricSearchTracker(thePxlBarLayers,theTIBLayers,theTOBLayers, theNegPxlFwdLayers,theNegTIDLayers,theNegTECLayers, - thePosPxlFwdLayers,thePosTIDLayers,thePosTECLayers); + thePosPxlFwdLayers,thePosTIDLayers,thePosTECLayers, tTopo); } From 6ccd2da0f4095ad20ba817e3565860b171983406 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2013 10:06:41 +0200 Subject: [PATCH 10/45] detid migration --- .../interface/PrintRecoObjects.h | 6 +++-- .../src/PrintRecoObjects.cc | 23 ++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/RecoTracker/ConversionSeedGenerators/interface/PrintRecoObjects.h b/RecoTracker/ConversionSeedGenerators/interface/PrintRecoObjects.h index 297e74dd3d1cd..422d6b6ae8c99 100644 --- a/RecoTracker/ConversionSeedGenerators/interface/PrintRecoObjects.h +++ b/RecoTracker/ConversionSeedGenerators/interface/PrintRecoObjects.h @@ -17,6 +17,8 @@ typedef edmNew::DetSet::const_iterator ClusIter; typedef edmNew::DetSetVector ClusterCollection; +class TrackerTopology; + class PrintRecoObjects{ public: @@ -25,9 +27,9 @@ class PrintRecoObjects{ void print(std::stringstream& ss, const SiStripCluster& clus); void print(std::stringstream& ss, const TrajectorySeed& tjS); - void print(std::stringstream& ss, const uint32_t& detid) const; + void print(std::stringstream& ss, const uint32_t& detid, const TrackerTopology *tTopo) const; void print(std::stringstream& ss, const reco::Track* track, const math::XYZPoint& vx); - std::string getString(uint32_t detid) const; + std::string getString(uint32_t detid, const TrackerTopology *tTopo) const; }; #endif diff --git a/RecoTracker/ConversionSeedGenerators/src/PrintRecoObjects.cc b/RecoTracker/ConversionSeedGenerators/src/PrintRecoObjects.cc index 81d57feac2988..74179a9920b49 100644 --- a/RecoTracker/ConversionSeedGenerators/src/PrintRecoObjects.cc +++ b/RecoTracker/ConversionSeedGenerators/src/PrintRecoObjects.cc @@ -1,9 +1,6 @@ #include "RecoTracker/ConversionSeedGenerators/interface/PrintRecoObjects.h" #include "DataFormats/SiStripDetId/interface/SiStripDetId.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" void PrintRecoObjects:: print(std::stringstream& ss, const SiStripCluster& clus){ @@ -38,35 +35,35 @@ PrintRecoObjects::print(std::stringstream& ss, const TrajectorySeed& tjS){ } void PrintRecoObjects:: -print(std::stringstream& ss, const uint32_t& detid) const{ - ss<< getString(detid); +print(std::stringstream& ss, const uint32_t& detid, const TrackerTopology *tTopo) const{ + ss<< getString(detid,tTopo); } std::string PrintRecoObjects:: -getString(uint32_t detid) const{ +getString(uint32_t detid, const TrackerTopology *tTopo) const{ std::string append=" "; char cindex[128]; SiStripDetId a(detid); if ( a.subdetId() == 3 ){ append+="_TIB_L"; - sprintf(cindex,"%d",TIBDetId(detid).layer()); + sprintf(cindex,"%d",tTopo->tibLayer(detid)); } else if ( a.subdetId() == 4 ) { - if(TIDDetId(detid).side()==1){ + if(tTopo->tidSide(detid)==1){ append+="_M_D"; }else{ append+="_M_P"; } - sprintf(cindex,"%d",TIDDetId(detid).wheel()); + sprintf(cindex,"%d",tTopo->tidWheel(detid)); } else if ( a.subdetId() == 5 ) { append+="_TOB_L"; - sprintf(cindex,"%d",TOBDetId(detid).layer()); + sprintf(cindex,"%d",tTopo->tobLayer(detid)); } else if ( a.subdetId() == 6 ) { - if(TECDetId(detid).side()==1){ + if(tTopo->tecSide(detid)==1){ append+="_TEC_M"; }else{ append+="_TEC_P"; } - sprintf(cindex,"%d",TECDetId(detid).wheel()); + sprintf(cindex,"%d",tTopo->tecWheel(detid)); } append+=std::string(cindex); From ad42178f9af4cf7ea21b0f9f995bd5bf309e5704 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 16 Oct 2013 10:45:50 +0200 Subject: [PATCH 11/45] detid migration --- .../PFTracking/interface/PFCheckHitPattern.h | 8 +++-- .../interface/PFDisplacedVertexFinder.h | 6 +++- .../plugins/PFDisplacedVertexProducer.cc | 5 ++- .../PFTracking/src/PFCheckHitPattern.cc | 36 +++++-------------- .../PFTracking/src/PFDisplacedVertexFinder.cc | 4 +-- 5 files changed, 24 insertions(+), 35 deletions(-) diff --git a/RecoParticleFlow/PFTracking/interface/PFCheckHitPattern.h b/RecoParticleFlow/PFTracking/interface/PFCheckHitPattern.h index c7b461293b7b0..d7431812882ac 100644 --- a/RecoParticleFlow/PFTracking/interface/PFCheckHitPattern.h +++ b/RecoParticleFlow/PFTracking/interface/PFCheckHitPattern.h @@ -15,6 +15,7 @@ #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h" #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #define DEBUG_CHECKHITPATTERN @@ -48,7 +49,8 @@ class PFCheckHitPattern { /// on track. PFTrackHitFullInfo - analyze(edm::ESHandle, const reco::TrackBaseRef track, + analyze(edm::ESHandle, edm::ESHandle, + const reco::TrackBaseRef track, const TransientVertex& vert); /// Print hit pattern on track @@ -58,12 +60,12 @@ class PFCheckHitPattern { private: /// Create map indicating r/z values of all layers/disks. - void init (edm::ESHandle); + void init (edm::ESHandle, + edm::ESHandle); /// Return a pair consisting of the numbers used by HitPattern to /// identify subdetector and layer number respectively. typedef std::pair DetInfo; - static DetInfo interpretDetId(DetId detId); /// Return a bool indicating if a given subdetector is in the barrel. static bool barrel(uint32_t subDet); diff --git a/RecoParticleFlow/PFTracking/interface/PFDisplacedVertexFinder.h b/RecoParticleFlow/PFTracking/interface/PFDisplacedVertexFinder.h index c1584a6859f21..3644f0eeb4240 100644 --- a/RecoParticleFlow/PFTracking/interface/PFDisplacedVertexFinder.h +++ b/RecoParticleFlow/PFTracking/interface/PFDisplacedVertexFinder.h @@ -13,6 +13,7 @@ #include "DataFormats/GeometryVector/interface/GlobalPoint.h" #include "DataFormats/GeometryVector/interface/GlobalVector.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" @@ -77,10 +78,12 @@ class PFDisplacedVertexFinder { /// Sets parameters for track extrapolation and hits study void setEdmParameters( const MagneticField* magField, edm::ESHandle globTkGeomHandle, - edm::ESHandle tkerGeomHandle){ + edm::ESHandle tkerGeomHandle, + edm::ESHandle tTopoHand){ magField_ = magField; globTkGeomHandle_ = globTkGeomHandle; tkerGeomHandle_ = tkerGeomHandle; + tTopoHand_ = tTopoHand; } void setTracksSelector(const edm::ParameterSet& ps){ @@ -184,6 +187,7 @@ class PFDisplacedVertexFinder { /// doc? edm::ESHandle tkerGeomHandle_; + edm::ESHandle tTopoHand_; /// to be able to extrapolate tracks f const MagneticField* magField_; diff --git a/RecoParticleFlow/PFTracking/plugins/PFDisplacedVertexProducer.cc b/RecoParticleFlow/PFTracking/plugins/PFDisplacedVertexProducer.cc index 229a4c6ac5308..b43f363375da8 100644 --- a/RecoParticleFlow/PFTracking/plugins/PFDisplacedVertexProducer.cc +++ b/RecoParticleFlow/PFTracking/plugins/PFDisplacedVertexProducer.cc @@ -122,6 +122,9 @@ PFDisplacedVertexProducer::produce(Event& iEvent, ESHandle tkerGeomHandle; iSetup.get().get(tkerGeomHandle); + ESHandle tTopoHand; + iSetup.get().get(tTopoHand); + Handle vertexCandidates; iEvent.getByLabel(inputTagVertexCandidates_, vertexCandidates); @@ -132,7 +135,7 @@ PFDisplacedVertexProducer::produce(Event& iEvent, iEvent.getByLabel(inputTagBeamSpot_, beamSpotHandle); // Fill useful event information for the Finder - pfDisplacedVertexFinder_.setEdmParameters(theMagField, globTkGeomHandle, tkerGeomHandle); + pfDisplacedVertexFinder_.setEdmParameters(theMagField, globTkGeomHandle, tkerGeomHandle,tTopoHand); pfDisplacedVertexFinder_.setPrimaryVertex(mainVertexHandle, beamSpotHandle); pfDisplacedVertexFinder_.setInput(vertexCandidates); diff --git a/RecoParticleFlow/PFTracking/src/PFCheckHitPattern.cc b/RecoParticleFlow/PFTracking/src/PFCheckHitPattern.cc index 862237db74d94..89093e2918834 100644 --- a/RecoParticleFlow/PFTracking/src/PFCheckHitPattern.cc +++ b/RecoParticleFlow/PFTracking/src/PFCheckHitPattern.cc @@ -10,12 +10,6 @@ // To convert detId to subdet/layer number. #include "DataFormats/SiStripDetId/interface/StripSubdetector.h" #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXBDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXFDetId.h" #include @@ -26,12 +20,15 @@ using namespace std; // r (or z) values if it is barrel (or endcap) respectively. PFCheckHitPattern::RZrangeMap PFCheckHitPattern::rangeRorZ_; -void PFCheckHitPattern::init(edm::ESHandle tkerGeomHandle_) { +void PFCheckHitPattern::init(edm::ESHandle tkerGeomHandle_, + edm::ESHandle tTopoHand) { // // Note min/max radius (z) of each barrel layer (endcap disk). // + const TrackerTopology *tTopo=tTopoHand.product(); + geomInitDone_ = true; // Get Tracker geometry @@ -41,7 +38,7 @@ void PFCheckHitPattern::init(edm::ESHandle tkerGeomHandle_) { for (unsigned int i = 0; i < dets.size(); i++) { // Get subdet and layer of this module - DetInfo detInfo = this->interpretDetId(dets[i]->geographicalId()); + DetInfo detInfo(dets[i]->geographicalId().subdetId(), tTopo->layer(dets[i]->geographicalId())); uint32_t subDet = detInfo.first; // Note r (or z) of module if barrel (or endcap). @@ -76,25 +73,7 @@ void PFCheckHitPattern::init(edm::ESHandle tkerGeomHandle_) { #endif } -PFCheckHitPattern::DetInfo PFCheckHitPattern::interpretDetId(DetId detId) { - // Convert detId to a pair consisting of the numbers used by HitPattern - // to identify subdetector and layer number respectively. - if (detId.subdetId() == StripSubdetector::TIB) { - return DetInfo( detId.subdetId() , TIBDetId(detId).layer() ); - } else if (detId.subdetId() == StripSubdetector::TOB) { - return DetInfo( detId.subdetId() , TOBDetId(detId).layer() ); - } else if (detId.subdetId() == StripSubdetector::TID) { - return DetInfo( detId.subdetId() , TIDDetId(detId).wheel() ); - } else if (detId.subdetId() == StripSubdetector::TEC) { - return DetInfo( detId.subdetId() , TECDetId(detId).wheel() ); - } else if (detId.subdetId() == PixelSubdetector::PixelBarrel) { - return DetInfo( detId.subdetId() , PXBDetId(detId).layer() ); - } else if (detId.subdetId() == PixelSubdetector::PixelEndcap) { - return DetInfo( detId.subdetId() , PXFDetId(detId).disk() ); - } else { - throw cms::Exception("RecoParticleFlow", "Found DetId that is not in Tracker"); - } -} + bool PFCheckHitPattern::barrel(uint32_t subDet) { // Determines if given sub-detector is in the barrel. @@ -105,6 +84,7 @@ bool PFCheckHitPattern::barrel(uint32_t subDet) { pair< PFCheckHitPattern::PFTrackHitInfo, PFCheckHitPattern::PFTrackHitInfo> PFCheckHitPattern::analyze(edm::ESHandle tkerGeomHandle_, + edm::ESHandle tTopoHand, const TrackBaseRef track, const TransientVertex& vert) { @@ -114,7 +94,7 @@ PFCheckHitPattern::analyze(edm::ESHandle tkerGeomHandle_, // on track. // Initialise geometry info if not yet done. - if (!geomInitDone_) this->init(tkerGeomHandle_); + if (!geomInitDone_) this->init(tkerGeomHandle_,tTopoHand); // Get hit patterns of this track const reco::HitPattern& hp = track.get()->hitPattern(); diff --git a/RecoParticleFlow/PFTracking/src/PFDisplacedVertexFinder.cc b/RecoParticleFlow/PFTracking/src/PFDisplacedVertexFinder.cc index c7c54bdd20b81..5afdb128ffe68 100644 --- a/RecoParticleFlow/PFTracking/src/PFDisplacedVertexFinder.cc +++ b/RecoParticleFlow/PFTracking/src/PFDisplacedVertexFinder.cc @@ -412,7 +412,7 @@ PFDisplacedVertexFinder::fitVertexFromSeed(PFDisplacedVertexSeed& displacedVerte if (theVertexAdaptiveRaw.trackWeight(transTracksRaw[i]) > minAdaptWeight_){ - PFTrackHitFullInfo pattern = hitPattern_.analyze(tkerGeomHandle_, transTracksRefRaw[i], theVertexAdaptiveRaw); + PFTrackHitFullInfo pattern = hitPattern_.analyze(tkerGeomHandle_, tTopoHand_, transTracksRefRaw[i], theVertexAdaptiveRaw); PFDisplacedVertex::VertexTrackType vertexTrackType = getVertexTrackType(pattern); @@ -529,7 +529,7 @@ PFDisplacedVertexFinder::fitVertexFromSeed(PFDisplacedVertexSeed& displacedVerte for(unsigned i = 0; i < transTracks.size();i++) { - PFTrackHitFullInfo pattern = hitPattern_.analyze(tkerGeomHandle_, transTracksRef[i], theRecoVertex); + PFTrackHitFullInfo pattern = hitPattern_.analyze(tkerGeomHandle_, tTopoHand_, transTracksRef[i], theRecoVertex); PFDisplacedVertex::VertexTrackType vertexTrackType = getVertexTrackType(pattern); From 8caf4e952bd77c7ed9b4146f10288deb90c1a5d9 Mon Sep 17 00:00:00 2001 From: alja Date: Thu, 17 Oct 2013 14:48:39 -0700 Subject: [PATCH 12/45] New GEM Digi proxy builder. Merge development from 6_2_X branch. --- .../FWCaloRecHitDigitSetProxyBuilder.cc | 174 +++++++++ .../FWCaloRecHitDigitSetProxyBuilder.h | 34 ++ .../plugins/FWCastorRecHitProxyBuilder.cc | 22 +- .../Calo/plugins/FWEcalRecHitProxyBuilder.cc | 83 +--- .../Calo/plugins/FWHBHERecHitProxyBuilder.cc | 77 +--- .../Calo/plugins/FWHFRecHitProxyBuilder.cc | 31 +- .../Calo/plugins/FWHORecHitProxyBuilder.cc | 30 +- .../Calo/plugins/FWZDCRecHitProxyBuilder.cc | 23 +- Fireworks/Core/src/FWItemAccessorFactory.cc | 4 +- Fireworks/Core/src/FWItemValueGetter.cc | 7 +- .../Core/src/FWProxyBuilderConfiguration.cc | 2 + Fireworks/Muons/plugins/BuildFile.xml | 2 + .../Muons/plugins/FWGEMDigiProxyBuilder.cc | 110 ++++++ .../Muons/plugins/FWGEMRecHitProxyBuilder.cc | 127 +++++++ .../Muons/plugins/FWItemMuonAccessors.cc | 12 +- .../FWPFCandidateWithHitsProxyBuilder.cc | 359 ++++++++++++++++++ .../FWPFCandidateWithHitsProxyBuilder.h | 39 ++ 17 files changed, 932 insertions(+), 204 deletions(-) create mode 100644 Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.cc create mode 100644 Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h create mode 100644 Fireworks/Muons/plugins/FWGEMDigiProxyBuilder.cc create mode 100644 Fireworks/Muons/plugins/FWGEMRecHitProxyBuilder.cc create mode 100644 Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.cc create mode 100644 Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.h diff --git a/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.cc b/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.cc new file mode 100644 index 0000000000000..0fc1c8f6e2dd3 --- /dev/null +++ b/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.cc @@ -0,0 +1,174 @@ +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" +#include "TEveBoxSet.h" +#include "FWCaloRecHitDigitSetProxyBuilder.h" +#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" +#include "Fireworks/Core/interface/FWEventItem.h" +#include "Fireworks/Core/interface/FWGeometry.h" +#include "Fireworks/Core/interface/BuilderUtils.h" +#include "Fireworks/Core/interface/FWViewEnergyScale.h" +#include "DataFormats/CaloRecHit/interface/CaloRecHit.h" + +#include "Fireworks/Core/interface/FWProxyBuilderConfiguration.h" + +FWCaloRecHitDigitSetProxyBuilder::FWCaloRecHitDigitSetProxyBuilder() + : m_invertBox(false), m_ignoreGeoShapeSize(false) +{} + +//______________________________________________________________________________ + +void FWCaloRecHitDigitSetProxyBuilder::setItem(const FWEventItem* iItem) +{ + FWProxyBuilderBase::setItem(iItem); + // if (iItem) iItem->getConfig()->assertParam( "IgnoreShapeSize", false); +} +//______________________________________________________________________________ + +void FWCaloRecHitDigitSetProxyBuilder::viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const CaloRecHit*) +{ + if ( m_ignoreGeoShapeSize) + { + // Same functionality as fireworks::energyTower3DCorners() + + for( int i = 0; i < 24; ++i ) + scaledCorners[i] = corners[i]; + + // Coordinates of a front face scaled + if( m_invertBox ) + { + // We know, that an ES rechit geometry in -Z needs correction. + // The back face is actually its front face. + for( unsigned int i = 0; i < 12; i += 3 ) + { + m_vector.Set( corners[i] - corners[i + 12], corners[i + 1] - corners[i + 13], corners[i + 2] - corners[i + 14] ); + m_vector.Normalize(); + m_vector *= scale; + + scaledCorners[i] = corners[i] + m_vector.fX; + scaledCorners[i + 1] = corners[i + 1] + m_vector.fY; + scaledCorners[i + 2] = corners[i + 2] + m_vector.fZ; + } + } + else + { + for( unsigned int i = 0; i < 12; i += 3 ) + { + m_vector.Set( corners[i + 12] - corners[i], corners[i + 13] - corners[i + 1], corners[i + 14] - corners[i + 2] ); + m_vector.Normalize(); + m_vector *= scale; + + scaledCorners[i] = corners[i + 12]; + scaledCorners[i + 1] = corners[i + 13]; + scaledCorners[i + 2] = corners[i + 14]; + + scaledCorners[i + 12] = corners[i + 12] + m_vector.fX; + scaledCorners[i + 13] = corners[i + 13] + m_vector.fY; + scaledCorners[i + 14] = corners[i + 14] + m_vector.fZ; + } + } + } + else { + + // Same functionality as fireworks::energyScaledBox3DCorners(). + + m_vector.Set(0.f, 0.f, 0.f); + for( unsigned int i = 0; i < 24; i += 3 ) + { + m_vector[0] += corners[i]; + m_vector[1] += corners[i + 1]; + m_vector[2] += corners[i + 2]; + } + m_vector *= 1.f/8.f; + + if (plotEt) + { + scale *= m_vector.Perp()/m_vector.Mag(); + } + + // Coordinates for a scaled version of the original box + for( unsigned int i = 0; i < 24; i += 3 ) + { + scaledCorners[i] = m_vector[0] + ( corners[i] - m_vector[0] ) * scale; + scaledCorners[i + 1] = m_vector[1] + ( corners[i + 1] - m_vector[1] ) * scale; + scaledCorners[i + 2] = m_vector[2] + ( corners[i + 2] - m_vector[2] ) * scale; + } + + if( m_invertBox ) + fireworks::invertBox( scaledCorners ); + } +} +//_____________________________________________________________________________ + +float FWCaloRecHitDigitSetProxyBuilder::scaleFactor(const FWViewContext* vc) +{ + // printf("scale face %f \n", vc->getEnergyScale()->getScaleFactor3D()); + return vc->getEnergyScale()->getScaleFactor3D()/50; +} + +//______________________________________________________________________________ + +void +FWCaloRecHitDigitSetProxyBuilder::scaleProduct(TEveElementList* parent, FWViewType::EType type, const FWViewContext* vc) +{ + size_t size = item()->size(); + if (!size) return; + + + std::vector scaledCorners(24); + float scale = scaleFactor(vc); + + assert(parent->NumChildren() == 1); + TEveBoxSet* boxSet = static_cast(*parent->BeginChildren()); + + for (int index = 0; index < static_cast(size); ++index) + { + const CaloRecHit* hit = (const CaloRecHit*)item()->modelData(index); + const float* corners = item()->getGeom()->getCorners(hit->detid()); + if (corners == 0) continue; + + FWDigitSetProxyBuilder::BFreeBox_t* b = (FWDigitSetProxyBuilder::BFreeBox_t*)boxSet->GetPlex()->Atom(index); + + viewContextBoxScale(corners, hit->energy()*scale, vc->getEnergyScale()->getPlotEt(), scaledCorners, hit); + memcpy(b->fVertices, &scaledCorners[0], sizeof(b->fVertices)); + } + boxSet->ElementChanged(); +} +//______________________________________________________________________________ + +void +FWCaloRecHitDigitSetProxyBuilder::build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* vc) +{ + size_t size = iItem->size(); + if (!size) return; + + // m_ignoreGeoShapeSize = item()->getConfig()->value("IgnoreShapeSize"); + + std::vector scaledCorners(24); + + float scale = scaleFactor(vc); + + TEveBoxSet* boxSet = addBoxSetToProduct(product); + boxSet->SetAntiFlick(kTRUE); + for (int index = 0; index < static_cast(size); ++index) + { + const CaloRecHit* hit = (const CaloRecHit*)item()->modelData(index); + + const float* corners = context().getGeom()->getCorners(hit->detid()); + if (corners) + { + m_vector.Set(0.f, 0.f, 0.f); + for( unsigned int i = 0; i < 24; i += 3 ) + { + m_vector[0] += corners[i]; + m_vector[1] += corners[i + 1]; + m_vector[2] += corners[i + 2]; + } + m_vector.Normalize(); + context().voteMaxEtAndEnergy( m_vector.Perp() *hit->energy(), hit->energy()); + viewContextBoxScale( corners, hit->energy()*scale, vc->getEnergyScale()->getPlotEt(), scaledCorners, hit); + } + + addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index).displayProperties()); + } +} + + diff --git a/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h b/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h new file mode 100644 index 0000000000000..799237bb772db --- /dev/null +++ b/Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h @@ -0,0 +1,34 @@ +#ifndef Fireworks_Calo_FWCaloRecHitDigitSetProxyBuilder_h +#define Fireworks_Calo_FWCaloRecHitDigitSetProxyBuilder_h + +#include "TEveVector.h" +#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" + +class CaloRecHit; + +class FWCaloRecHitDigitSetProxyBuilder : public FWDigitSetProxyBuilder +{ +public: + FWCaloRecHitDigitSetProxyBuilder(); + virtual ~FWCaloRecHitDigitSetProxyBuilder( void ) {} + + virtual void setItem(const FWEventItem* iItem); + + virtual bool havePerViewProduct(FWViewType::EType) const { return true; } + virtual void scaleProduct(TEveElementList* parent, FWViewType::EType, const FWViewContext* vc); + virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); + + virtual float scaleFactor(const FWViewContext* vc); + virtual void invertBox(bool x ) { m_invertBox = x ;} + virtual void viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const CaloRecHit*); + +private: + + FWCaloRecHitDigitSetProxyBuilder( const FWCaloRecHitDigitSetProxyBuilder& ); + const FWCaloRecHitDigitSetProxyBuilder& operator=( const FWCaloRecHitDigitSetProxyBuilder& ); + + bool m_invertBox; + bool m_ignoreGeoShapeSize; + TEveVector m_vector; // internal memeber, to avoid constant recreation +}; +#endif diff --git a/Fireworks/Calo/plugins/FWCastorRecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWCastorRecHitProxyBuilder.cc index a1ca75f19e549..b07a56c520686 100644 --- a/Fireworks/Calo/plugins/FWCastorRecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWCastorRecHitProxyBuilder.cc @@ -5,29 +5,30 @@ * Created by Ianna Osborne on 7/8/10. * */ - -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/BuilderUtils.h" -#include "DataFormats/HcalRecHit/interface/CastorRecHit.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -class FWCastorRecHitProxyBuilder : public FWDigitSetProxyBuilder +class FWCastorRecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: FWCastorRecHitProxyBuilder( void ) {} virtual ~FWCastorRecHitProxyBuilder( void ) {} + + virtual float scaleFactor(const FWViewContext* vc) { return 10 * FWCaloRecHitDigitSetProxyBuilder::scaleFactor(vc); } + REGISTER_PROXYBUILDER_METHODS(); private: FWCastorRecHitProxyBuilder( const FWCastorRecHitProxyBuilder& ); const FWCastorRecHitProxyBuilder& operator=( const FWCastorRecHitProxyBuilder& ); - - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); }; +REGISTER_FWPROXYBUILDER( FWCastorRecHitProxyBuilder, CastorRecHitCollection, "Castor RecHit", FWViewType::kISpyBit ); + +// AMT:: scale box round center. Scaleing and e/et added now. Previously used fireworks::energyTower3DCorners(); + +/* void FWCastorRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*) { const CastorRecHitCollection* collection = 0; @@ -50,5 +51,4 @@ void FWCastorRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } } - -REGISTER_FWPROXYBUILDER( FWCastorRecHitProxyBuilder, CastorRecHitCollection, "Castor RecHit", FWViewType::kISpyBit ); +*/ diff --git a/Fireworks/Calo/plugins/FWEcalRecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWEcalRecHitProxyBuilder.cc index 23dd8db24777f..c887a83917529 100644 --- a/Fireworks/Calo/plugins/FWEcalRecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWEcalRecHitProxyBuilder.cc @@ -5,94 +5,40 @@ * Created by Ianna Osborne on 5/28/10. * */ -#include "TEveBoxSet.h" -#include "TEveChunkManager.h" -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/FWViewEnergyScale.h" -#include "Fireworks/Core/interface/BuilderUtils.h" #include "DataFormats/EcalDetId/interface/EcalSubdetector.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" -class FWEcalRecHitProxyBuilder : public FWDigitSetProxyBuilder +class FWEcalRecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: - FWEcalRecHitProxyBuilder():FWDigitSetProxyBuilder(), m_plotEt(true) {} + FWEcalRecHitProxyBuilder() {} virtual ~FWEcalRecHitProxyBuilder() {} - virtual bool havePerViewProduct(FWViewType::EType) const { return true; } - virtual void scaleProduct(TEveElementList* parent, FWViewType::EType, const FWViewContext* vc); + virtual void viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const CaloRecHit*); REGISTER_PROXYBUILDER_METHODS(); private: FWEcalRecHitProxyBuilder( const FWEcalRecHitProxyBuilder& ); const FWEcalRecHitProxyBuilder& operator=( const FWEcalRecHitProxyBuilder& ); - - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); - - bool m_plotEt; }; -//______________________________________________________________________________ - - -void -FWEcalRecHitProxyBuilder::scaleProduct(TEveElementList* parent, FWViewType::EType type, const FWViewContext* vc) -{ - - if (m_plotEt != vc->getEnergyScale()->getPlotEt() ) - { - m_plotEt = !m_plotEt; - - const EcalRecHitCollection* collection = 0; - item()->get( collection ); - if (! collection) - return; - - int index = 0; - std::vector scaledCorners(24); - for (std::vector::const_iterator it = collection->begin() ; it != collection->end(); ++it, ++index) - { - const float* corners = item()->getGeom()->getCorners((*it).detid()); - if (corners == 0) - continue; - Float_t scale = 10.0; - bool reflect = false; - if (EcalSubdetector( (*it).detid().subdetId() ) == EcalPreshower) - { - scale = 1000.0; // FIXME: The scale should be taken form somewhere else - reflect = corners[2] < 0; - } +void FWEcalRecHitProxyBuilder::viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const CaloRecHit* hit) +{ + invertBox((EcalSubdetector( hit->detid().subdetId() ) == EcalPreshower) && (corners[2] < 0)); + FWCaloRecHitDigitSetProxyBuilder::viewContextBoxScale(corners, scale, plotEt, scaledCorners, hit ); +} - FWDigitSetProxyBuilder::BFreeBox_t* b = (FWDigitSetProxyBuilder::BFreeBox_t*)getBoxSet()->GetPlex()->Atom(index); - /* - printf("--------------------scale product \n"); - for (int i = 0; i < 8 ; ++i) - printf("[%f %f %f ]\n",b->fVertices[i][0], b->fVertices[i][1],b->fVertices[i][2] ); - */ - if (m_plotEt) - fireworks::etTower3DCorners(corners, (*it).energy() * scale, scaledCorners, reflect); - else - fireworks::energyTower3DCorners(corners, (*it).energy() * scale, scaledCorners, reflect); +REGISTER_FWPROXYBUILDER( FWEcalRecHitProxyBuilder, EcalRecHitCollection, "Ecal RecHit", FWViewType::kISpyBit ); - memcpy(b->fVertices, &scaledCorners[0], sizeof(b->fVertices)); +// AMT: Scale box round cener. Prviousy used fireworks::energyTower3DCorners(). +// Why differnt scale factor in EcalPreShower ??? - /* - printf("after \n"); - for (int i = 0; i < 8 ; ++i) - printf("[%f %f %f ]\n",b->fVertices[i][0], b->fVertices[i][1],b->fVertices[i][2] ); - */ - } - getBoxSet()->ElementChanged(); - } -} - -//______________________________________________________________________________ +/* void FWEcalRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext* vc) { m_plotEt = vc->getEnergyScale()->getPlotEt(); @@ -127,5 +73,4 @@ void FWEcalRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList* addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } } - -REGISTER_FWPROXYBUILDER( FWEcalRecHitProxyBuilder, EcalRecHitCollection, "Ecal RecHit", FWViewType::kISpyBit ); +*/ diff --git a/Fireworks/Calo/plugins/FWHBHERecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWHBHERecHitProxyBuilder.cc index 5277b9d620561..4de4ffafc0eba 100644 --- a/Fireworks/Calo/plugins/FWHBHERecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWHBHERecHitProxyBuilder.cc @@ -1,85 +1,25 @@ -#include "TEveCompound.h" -#include "TEveBoxSet.h" - -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/BuilderUtils.h" -#include "Fireworks/Core/interface/FWViewEnergyScale.h" -#include "DataFormats/HcalRecHit/interface/HBHERecHit.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -class FWHBHERecHitProxyBuilder : public FWDigitSetProxyBuilder +class FWHBHERecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: - FWHBHERecHitProxyBuilder( void ) - : m_maxEnergy( 0.85 ), m_plotEt(true) - {} - - virtual ~FWHBHERecHitProxyBuilder( void ) - {} - - virtual bool havePerViewProduct(FWViewType::EType) const { return true; } - virtual void scaleProduct(TEveElementList* parent, FWViewType::EType, const FWViewContext* vc); + FWHBHERecHitProxyBuilder( void ) { invertBox(true); } + virtual ~FWHBHERecHitProxyBuilder( void ) {} REGISTER_PROXYBUILDER_METHODS(); private: - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); - - Float_t m_maxEnergy; - bool m_plotEt; - FWHBHERecHitProxyBuilder( const FWHBHERecHitProxyBuilder& ); const FWHBHERecHitProxyBuilder& operator=( const FWHBHERecHitProxyBuilder& ); }; -void -FWHBHERecHitProxyBuilder::scaleProduct(TEveElementList* parent, FWViewType::EType type, const FWViewContext* vc) -{ - if (m_plotEt != vc->getEnergyScale()->getPlotEt() ) - { - m_plotEt = !m_plotEt; - - const HBHERecHitCollection* collection = 0; - item()->get( collection ); - if (! collection) - return; - - int index = 0; - std::vector scaledCorners(24); - for (std::vector::const_iterator it = collection->begin() ; it != collection->end(); ++it, ++index) - { - const float* corners = item()->getGeom()->getCorners((*it).detid()); - if (corners == 0) - continue; - FWDigitSetProxyBuilder::BFreeBox_t* b = (FWDigitSetProxyBuilder::BFreeBox_t*)getBoxSet()->GetPlex()->Atom(index); - - /* - printf("--------------------scale product \n"); - for (int i = 0; i < 8 ; ++i) - printf("[%f %f %f ]\n",b->fVertices[i][0], b->fVertices[i][1],b->fVertices[i][2] ); - */ - - if (m_plotEt) - fireworks::etScaledBox3DCorners(corners, (*it).energy(), m_maxEnergy, scaledCorners, true); - else - fireworks::energyScaledBox3DCorners(corners, (*it).energy() / m_maxEnergy, scaledCorners, true); - - /* - printf("after \n"); - for (int i = 0; i < 8 ; ++i) - printf("[%f %f %f ]\n",b->fVertices[i][0], b->fVertices[i][1],b->fVertices[i][2] ); - */ - memcpy(b->fVertices, &scaledCorners[0], sizeof(b->fVertices)); +REGISTER_FWPROXYBUILDER( FWHBHERecHitProxyBuilder, HBHERecHitCollection, "HBHE RecHit", FWViewType::kISpyBit ); - } - getBoxSet()->ElementChanged(); - } -} -//______________________________________________________________________________ +// AMT: Refelct box. Previously used energyScaledBox3DCorners() +/* void FWHBHERecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* vc) { @@ -117,5 +57,4 @@ FWHBHERecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* prod addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } } - -REGISTER_FWPROXYBUILDER( FWHBHERecHitProxyBuilder, HBHERecHitCollection, "HBHE RecHit", FWViewType::kISpyBit ); +*/ diff --git a/Fireworks/Calo/plugins/FWHFRecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWHFRecHitProxyBuilder.cc index 7ee731e6b2223..d2f37bdbda8ce 100644 --- a/Fireworks/Calo/plugins/FWHFRecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWHFRecHitProxyBuilder.cc @@ -1,33 +1,25 @@ -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/BuilderUtils.h" -#include "Fireworks/Core/interface/fwLog.h" -#include "DataFormats/HcalRecHit/interface/HFRecHit.h" #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -#include "TEveCompound.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" -class FWHFRecHitProxyBuilder : public FWDigitSetProxyBuilder +class FWHFRecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: - FWHFRecHitProxyBuilder( void ) - : m_maxEnergy( 5.0 ) - {} - - virtual ~FWHFRecHitProxyBuilder( void ) - {} + FWHFRecHitProxyBuilder( void ) {invertBox(true); } + virtual ~FWHFRecHitProxyBuilder( void ) {} REGISTER_PROXYBUILDER_METHODS(); private: - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); - - Float_t m_maxEnergy; - FWHFRecHitProxyBuilder( const FWHFRecHitProxyBuilder& ); const FWHFRecHitProxyBuilder& operator=( const FWHFRecHitProxyBuilder& ); }; + +REGISTER_FWPROXYBUILDER( FWHFRecHitProxyBuilder, HFRecHitCollection, "HF RecHit", FWViewType::kISpyBit ); + +// AMT: Reflect box. Previously used energyScaledBox3DCorners(). Scaling and e/et mode added now. + +/* void FWHFRecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ) { @@ -66,5 +58,4 @@ FWHFRecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* produc addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } } - -REGISTER_FWPROXYBUILDER( FWHFRecHitProxyBuilder, HFRecHitCollection, "HF RecHit", FWViewType::kISpyBit ); +*/ diff --git a/Fireworks/Calo/plugins/FWHORecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWHORecHitProxyBuilder.cc index a87bcb88e68bf..eee8a41200936 100644 --- a/Fireworks/Calo/plugins/FWHORecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWHORecHitProxyBuilder.cc @@ -1,32 +1,25 @@ -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/BuilderUtils.h" -#include "DataFormats/HcalRecHit/interface/HORecHit.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -#include "TEveCompound.h" -class FWHORecHitProxyBuilder : public FWDigitSetProxyBuilder + +class FWHORecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: - FWHORecHitProxyBuilder( void ) - : m_maxEnergy( 1.0 ) - {} - - virtual ~FWHORecHitProxyBuilder( void ) - {} + FWHORecHitProxyBuilder( void ) { invertBox(true); } + virtual ~FWHORecHitProxyBuilder( void ) {} REGISTER_PROXYBUILDER_METHODS(); private: - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); - - Float_t m_maxEnergy; - FWHORecHitProxyBuilder( const FWHORecHitProxyBuilder& ); const FWHORecHitProxyBuilder& operator=( const FWHORecHitProxyBuilder& ); }; +REGISTER_FWPROXYBUILDER( FWHORecHitProxyBuilder, HORecHitCollection, "HO RecHit", FWViewType::kISpyBit ); + +// AMT scale around center, box is inverted. Scaling and e/et mode added now. Previously used fireworks::energyScaledBox3DCorners(). + +/* void FWHORecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ) { @@ -57,5 +50,4 @@ FWHORecHitProxyBuilder::build( const FWEventItem* iItem, TEveElementList* produc addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } } - -REGISTER_FWPROXYBUILDER( FWHORecHitProxyBuilder, HORecHitCollection, "HO RecHit", FWViewType::kISpyBit ); +*/ diff --git a/Fireworks/Calo/plugins/FWZDCRecHitProxyBuilder.cc b/Fireworks/Calo/plugins/FWZDCRecHitProxyBuilder.cc index f5eec1bef808f..e3b6e60857e62 100644 --- a/Fireworks/Calo/plugins/FWZDCRecHitProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWZDCRecHitProxyBuilder.cc @@ -5,15 +5,12 @@ * Created by Ianna Osborne on 7/8/10. * */ -#include "Fireworks/Core/interface/FWDigitSetProxyBuilder.h" -#include "Fireworks/Core/interface/FWEventItem.h" -#include "Fireworks/Core/interface/FWGeometry.h" -#include "Fireworks/Core/interface/BuilderUtils.h" +#include "Fireworks/Calo/plugins/FWCaloRecHitDigitSetProxyBuilder.h" #include "DataFormats/HcalRecHit/interface/ZDCRecHit.h" #include "DataFormats/Common/interface/SortedCollection.h" -#include "TEveBoxSet.h" -class FWZDCRecHitProxyBuilder : public FWDigitSetProxyBuilder + +class FWZDCRecHitProxyBuilder : public FWCaloRecHitDigitSetProxyBuilder { public: FWZDCRecHitProxyBuilder( void ) {} @@ -23,11 +20,15 @@ class FWZDCRecHitProxyBuilder : public FWDigitSetProxyBuilder private: FWZDCRecHitProxyBuilder( const FWZDCRecHitProxyBuilder& ); - - const FWZDCRecHitProxyBuilder& operator=( const FWZDCRecHitProxyBuilder& ); - virtual void build( const FWEventItem* iItem, TEveElementList* product, const FWViewContext* ); + const FWZDCRecHitProxyBuilder& operator=( const FWZDCRecHitProxyBuilder& ); }; + +REGISTER_FWPROXYBUILDER( FWZDCRecHitProxyBuilder, edm::SortedCollection , "ZDC RecHit", FWViewType::kISpyBit ); + +// AMT scale box round center. Scaling and e/et mode added now. Previusly used energyTower3DCorners(). + +/* void FWZDCRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*) { const edm::SortedCollection *collection = 0; @@ -53,6 +54,4 @@ void FWZDCRecHitProxyBuilder::build(const FWEventItem* iItem, TEveElementList* p addBox(boxSet, &scaledCorners[0], iItem->modelInfo(index++).displayProperties()); } -} - -REGISTER_FWPROXYBUILDER( FWZDCRecHitProxyBuilder, edm::SortedCollection , "ZDC RecHit", FWViewType::kISpyBit ); + }*/ diff --git a/Fireworks/Core/src/FWItemAccessorFactory.cc b/Fireworks/Core/src/FWItemAccessorFactory.cc index 1c592832cffb2..7a448372dfea5 100644 --- a/Fireworks/Core/src/FWItemAccessorFactory.cc +++ b/Fireworks/Core/src/FWItemAccessorFactory.cc @@ -206,8 +206,8 @@ bool FWItemAccessorFactory::hasAccessor(const TClass *iClass, std::string &result) { const std::vector &available - = FWItemAccessorRegistry::get()->available(); - + = edmplugin::PluginManager::get()->categoryToInfos().find("cmsShow FWItemAccessorBase")->second; + for (size_t i = 0, e = available.size(); i != e; ++i) { std::string name = available[i].name_; diff --git a/Fireworks/Core/src/FWItemValueGetter.cc b/Fireworks/Core/src/FWItemValueGetter.cc index a5cb60a5f83de..e1920c1a6c2ce 100644 --- a/Fireworks/Core/src/FWItemValueGetter.cc +++ b/Fireworks/Core/src/FWItemValueGetter.cc @@ -8,7 +8,6 @@ // // Original Author: Chris Jones // Created: Sun Nov 30 16:15:43 EST 2008 -// $Id: FWItemValueGetter.cc,v 1.11 2012/12/02 09:49:59 amraktad Exp $ // // system include files @@ -53,6 +52,12 @@ FWItemValueGetter::FWItemValueGetter(const edm::TypeWithDict& iType, const std:: addEntry("y0", 2, "y", "cm"); addEntry("z0", 2, "z", "cm"); } + else if (strstr(iPurpose.c_str(), "Vertices") ) + { + addEntry("x", 2, "x", "cm"); + addEntry("y", 2, "y", "cm"); + addEntry("z", 2, "z", "cm"); + } else if (strstr(iPurpose.c_str(), "Conversion") ) { addEntry("pairMomentum().rho()", 1, "pt", "GeV" ); diff --git a/Fireworks/Core/src/FWProxyBuilderConfiguration.cc b/Fireworks/Core/src/FWProxyBuilderConfiguration.cc index 3e4845a9cc4cb..519cda89ee8f7 100644 --- a/Fireworks/Core/src/FWProxyBuilderConfiguration.cc +++ b/Fireworks/Core/src/FWProxyBuilderConfiguration.cc @@ -147,7 +147,9 @@ template T FWProxyBuilderConfiguration::value(const std::string& pname template bool FWProxyBuilderConfiguration::value(const std::string& name); template long FWProxyBuilderConfiguration::value(const std::string& name); template double FWProxyBuilderConfiguration::value(const std::string& name); +template std::string FWProxyBuilderConfiguration::value(const std::string& name); template FWGenericParameter* FWProxyBuilderConfiguration::assertParam(const std::string& name, bool def); template FWGenericParameterWithRange* FWProxyBuilderConfiguration::assertParam(const std::string& name, long def,long min, long max); template FWGenericParameterWithRange* FWProxyBuilderConfiguration::assertParam(const std::string& name, double def,double min, double max); +template FWGenericParameter* FWProxyBuilderConfiguration::assertParam(const std::string& name, std::string def); diff --git a/Fireworks/Muons/plugins/BuildFile.xml b/Fireworks/Muons/plugins/BuildFile.xml index d38b7d67d81c6..0169a79459a43 100644 --- a/Fireworks/Muons/plugins/BuildFile.xml +++ b/Fireworks/Muons/plugins/BuildFile.xml @@ -3,6 +3,8 @@ + + diff --git a/Fireworks/Muons/plugins/FWGEMDigiProxyBuilder.cc b/Fireworks/Muons/plugins/FWGEMDigiProxyBuilder.cc new file mode 100644 index 0000000000000..d8e00cf5aadb6 --- /dev/null +++ b/Fireworks/Muons/plugins/FWGEMDigiProxyBuilder.cc @@ -0,0 +1,110 @@ +// -*- C++ -*- +// +// Package: Muon +// Class : FWGEMDigiProxyBuilder +// +// Implementation: +// +// +// Original Author: mccauley +// Created: Sun Jan 6 23:57:00 EST 2008 +// $Id: FWRPCDigiProxyBuilder.cc,v 1.14 2010/09/07 15:46:48 yana Exp $ +// $Id: FWGEMDigiProxyBuilder.cc,v 1.15 2013/10/10 22:06:00 YusangKim$ +// + +#include "TEveStraightLineSet.h" +#include "TEveCompound.h" +#include "TEveGeoNode.h" + +#include "Fireworks/Core/interface/FWProxyBuilderBase.h" +#include "Fireworks/Core/interface/FWEventItem.h" +#include "Fireworks/Core/interface/FWGeometry.h" +#include "Fireworks/Core/interface/fwLog.h" + +#include "DataFormats/GEMDigi/interface/GEMDigiCollection.h" + +class FWGEMDigiProxyBuilder : public FWProxyBuilderBase +{ +public: + FWGEMDigiProxyBuilder() {} + virtual ~FWGEMDigiProxyBuilder() {} + + REGISTER_PROXYBUILDER_METHODS(); + +private: + virtual void build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*); + FWGEMDigiProxyBuilder(const FWGEMDigiProxyBuilder&); + const FWGEMDigiProxyBuilder& operator=(const FWGEMDigiProxyBuilder&); +}; + +void +FWGEMDigiProxyBuilder::build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*) +{ + const GEMDigiCollection* digis = 0; + + iItem->get(digis); + + if ( ! digis ) + { + fwLog(fwlog::kWarning)<<"Failed to get GEMDigis"<getGeom(); + + for ( GEMDigiCollection::DigiRangeIterator dri = digis->begin(), driEnd = digis->end(); + dri != driEnd; ++dri ) + { + unsigned int rawid = (*dri).first.rawId(); + const GEMDigiCollection::Range& range = (*dri).second; + + if( ! geom->contains( rawid )) + { + fwLog( fwlog::kWarning ) << "Failed to get geometry of GEM roll with detid: " + << rawid << std::endl; + + TEveCompound* compound = createCompound(); + setupAddElement( compound, product ); + + continue; + } + + const float* parameters = geom->getParameters( rawid ); + float nStrips = parameters[0]; + float halfStripLength = parameters[1]*0.5; + float pitch = parameters[2]; + float offset = -0.5*nStrips*pitch; + + for( GEMDigiCollection::const_iterator dit = range.first; + dit != range.second; ++dit ) + { + TEveStraightLineSet* stripDigiSet = new TEveStraightLineSet; + stripDigiSet->SetLineWidth(3); + setupAddElement( stripDigiSet, product ); + + int strip = (*dit).strip(); + float centreOfStrip = (strip-0.5)*pitch + offset; + + float localPointTop[3] = + { + centreOfStrip, halfStripLength, 0.0 + }; + + float localPointBottom[3] = + { + centreOfStrip, -halfStripLength, 0.0 + }; + + float globalPointTop[3]; + float globalPointBottom[3]; + + geom->localToGlobal( rawid, localPointTop, globalPointTop, localPointBottom, globalPointBottom ); + + stripDigiSet->AddLine(globalPointTop[0], globalPointTop[1], globalPointTop[2], + globalPointBottom[0], globalPointBottom[1], globalPointBottom[2]); + } + } +} + +REGISTER_FWPROXYBUILDER(FWGEMDigiProxyBuilder, GEMDigiCollection, "GEMDigi", + FWViewType::kAll3DBits | FWViewType::kAllRPZBits); + diff --git a/Fireworks/Muons/plugins/FWGEMRecHitProxyBuilder.cc b/Fireworks/Muons/plugins/FWGEMRecHitProxyBuilder.cc new file mode 100644 index 0000000000000..dc09f4d735b19 --- /dev/null +++ b/Fireworks/Muons/plugins/FWGEMRecHitProxyBuilder.cc @@ -0,0 +1,127 @@ +// -*- C++ -*- +// +// Package: Muons +// Class : FWGEMRecHitProxyBuilder +// +// +// Original Author: +// Created: Sun Jan 6 23:42:33 EST 2008 +// $Id: FWRPCRecHitProxyBuilder.cc,v 1.16 2010/11/11 20:25:28 amraktad Exp $ +// $Id: FWGEMRecHitProxyBuilder.cc,v 1.17 2013/10/10 21:57:00 Yusang Kim $ +// + +#include "TEveGeoNode.h" +#include "TEveStraightLineSet.h" + +#include "Fireworks/Core/interface/FWSimpleProxyBuilderTemplate.h" +#include "Fireworks/Core/interface/FWEventItem.h" +#include "Fireworks/Core/interface/FWGeometry.h" +#include "Fireworks/Core/interface/fwLog.h" + +#include "DataFormats/GEMRecHit/interface/GEMRecHitCollection.h" + +class FWGEMRecHitProxyBuilder : public FWSimpleProxyBuilderTemplate +{ +public: + FWGEMRecHitProxyBuilder() {} + virtual ~FWGEMRecHitProxyBuilder() {} + + virtual bool haveSingleProduct() const + { + return false; + } + + REGISTER_PROXYBUILDER_METHODS(); + +private: + FWGEMRecHitProxyBuilder(const FWGEMRecHitProxyBuilder&); + const FWGEMRecHitProxyBuilder& operator=(const FWGEMRecHitProxyBuilder&); + + virtual void buildViewType(const GEMRecHit& iData, + unsigned int iIndex, + TEveElement& oItemHolder, + FWViewType::EType type, + const FWViewContext*); +}; + + +void +FWGEMRecHitProxyBuilder::buildViewType(const GEMRecHit& iData, + unsigned int iIndex, + TEveElement& oItemHolder, + FWViewType::EType type, + const FWViewContext*) +{ + GEMDetId gemId = iData.gemId(); + unsigned int rawid = gemId.rawId(); + + const FWGeometry *geom = item()->getGeom(); + + if( ! geom->contains( rawid )) + { + fwLog( fwlog::kError ) << "failed to get geometry of GEM roll with detid: " + << rawid <SetLineWidth(3); + + if( type == FWViewType::k3D || type == FWViewType::kISpy ) + { + TEveGeoShape* shape = geom->getEveShape( rawid ); + shape->SetMainTransparency( 75 ); + shape->SetMainColor( item()->defaultDisplayProperties().color()); + recHitSet->AddElement( shape ); + } + + float localX = iData.localPosition().x(); + float localY = iData.localPosition().y(); + float localZ = iData.localPosition().z(); + + float localXerr = sqrt(iData.localPositionError().xx()); + float localYerr = sqrt(iData.localPositionError().yy()); + + float localU1[3] = + { + localX - localXerr, localY, localZ + }; + + float localU2[3] = + { + localX + localXerr, localY, localZ + }; + + float localV1[3] = + { + localX, localY - localYerr, localZ + }; + + float localV2[3] = + { + localX, localY + localYerr, localZ + }; + + float globalU1[3]; + float globalU2[3]; + float globalV1[3]; + float globalV2[3]; + + FWGeometry::IdToInfoItr det = geom->find( rawid ); + + geom->localToGlobal( *det, localU1, globalU1 ); + geom->localToGlobal( *det, localU2, globalU2 ); + geom->localToGlobal( *det, localV1, globalV1 ); + geom->localToGlobal( *det, localV2, globalV2 ); + + recHitSet->AddLine( globalU1[0], globalU1[1], globalU1[2], + globalU2[0], globalU2[1], globalU2[2] ); + + recHitSet->AddLine( globalV1[0], globalV1[1], globalV1[2], + globalV2[0], globalV2[1], globalV2[2] ); + + setupAddElement( recHitSet, &oItemHolder ); +} + +REGISTER_FWPROXYBUILDER( FWGEMRecHitProxyBuilder, GEMRecHit, "GEM RecHits", + FWViewType::kAll3DBits | FWViewType::kAllRPZBits); diff --git a/Fireworks/Muons/plugins/FWItemMuonAccessors.cc b/Fireworks/Muons/plugins/FWItemMuonAccessors.cc index 6d709e1d4ce3d..8f05abbdcccba 100644 --- a/Fireworks/Muons/plugins/FWItemMuonAccessors.cc +++ b/Fireworks/Muons/plugins/FWItemMuonAccessors.cc @@ -8,7 +8,7 @@ // // Original Author: Giulio Eulisse // Created: Thu Feb 18 15:19:44 EDT 2008 -// $Id: FWItemMuonAccessors.cc,v 1.7 2010/06/18 12:44:05 yana Exp $ +// $Id: FWItemMuonAccessors.cc,v 1.6 2010/06/11 08:21:07 mccauley Exp $ // // system include files @@ -53,5 +53,15 @@ REGISTER_TEMPLATE_FWITEMACCESSOR(CSCStripDigiAccessor, CSCStripDigiCollection, " typedef FWItemMuonDigiAccessor RPCDigiAccessor; REGISTER_TEMPLATE_FWITEMACCESSOR(RPCDigiAccessor, RPCDigiCollection, "RPCDigiCollectionAccessor"); + typedef FWItemMuonDigiAccessor CSCRPCDigiAccessor; REGISTER_TEMPLATE_FWITEMACCESSOR(CSCRPCDigiAccessor, CSCRPCDigiCollection, "CSCRPCDigiCollectionAccessor"); + +//============================================================================== + +#include "DataFormats/GEMDigi/interface/GEMDigiCollection.h" +#include "DataFormats/GEMRecHit/interface/GEMRecHitCollection.h" +REGISTER_TEMPLATE_FWITEMACCESSOR(FWItemRandomAccessor,GEMRecHitCollection,"GEMRecHitCollectionAccessor"); + +typedef FWItemMuonDigiAccessor GEMDigiAccessor; +REGISTER_TEMPLATE_FWITEMACCESSOR(GEMDigiAccessor, GEMDigiCollection, "GEMDigiCollectionAccessor"); diff --git a/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.cc b/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.cc new file mode 100644 index 0000000000000..79efc67471aeb --- /dev/null +++ b/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.cc @@ -0,0 +1,359 @@ + +#define protected public +#include "TEveBoxSet.h" +#undef protected +#include "TEveTrack.h" +#include "TEveTrackPropagator.h" +#include "TEveCompound.h" +#include "TEveStraightLineSet.h" +#include "TEveProjectionBases.h" + +#include "Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.h" +#include "Fireworks/Core/interface/FWEventItem.h" +#include "Fireworks/Core/interface/FWGeometry.h" +#include "Fireworks/Core/interface/BuilderUtils.h" +#include "Fireworks/Core/interface/fwLog.h" +#include "Fireworks/Core/interface/FWViewEnergyScale.h" +#include "Fireworks/Core/interface/FWProxyBuilderConfiguration.h" +#include "Fireworks/ParticleFlow/interface/setTrackTypePF.h" + +#include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" +#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" +#include "DataFormats/ParticleFlowReco/interface/PFBlock.h" +#include "DataFormats/ParticleFlowReco/interface/PFCluster.h" + +#include "DataFormats/FWLite/interface/Handle.h" + +namespace +{ +static std::string kRecHitCollectionName = "RecHitCollection"; +void addLineToLineSet(TEveStraightLineSet* ls, const float* p, int i1, int i2) +{ + i1 *= 3; + i2 *= 3; + ls->AddLine(p[i1], p[i1+1], p[i1+2], p[i2], p[i2+1], p[i2+2]); +} + + +void addBoxAsLines(TEveStraightLineSet* lineset, const float* p) +{ + for (int l = 0; l < 5; l+=4) + { + addLineToLineSet(lineset, p, 0+l, 1+l); + addLineToLineSet(lineset, p, 1+l, 2+l); + addLineToLineSet(lineset, p, 2+l, 3+l); + addLineToLineSet(lineset, p, 3+l, 0+l); + } + for (int l = 0; l < 4; ++l) + addLineToLineSet(lineset, p, 0+l, 4+l); +} + +void editLineInLineSet(TEveChunkManager::iterator& li, const float* p, int i1, int i2) +{ + TEveStraightLineSet::Line_t& line = * (TEveStraightLineSet::Line_t*) li(); + i1 *= 3; + i2 *= 3; + for (int i = 0; i < 3 ; ++i) { + line.fV1[0+i] = p[i1+i]; + line.fV2[0+i] = p[i2+i]; + } + + li.next(); +} + +void editBoxInLineSet(TEveChunkManager::iterator& li, const float* p) +{ + + for (int i = 0; i < 5; i+=4) + { + editLineInLineSet(li, p, 0+i, 1+i); + + editLineInLineSet(li, p, 1+i, 2+i); + editLineInLineSet(li, p, 2+i, 3+i); + editLineInLineSet(li, p, 3+i, 0+i); + } + for (int i = 0; i < 4; ++i) + editLineInLineSet(li, p, 0+i, 4+i); +} +} + + //______________________________________________________________________________ + +void FWPFCandidateWithHitsProxyBuilder::setItem(const FWEventItem* iItem) +{ + + FWProxyBuilderBase::setItem(iItem); + if (iItem) { + std::string defn = "particleFlowRecHitHCAL"; + iItem->getConfig()->assertParam(kRecHitCollectionName, defn); + } +} + +//______________________________________________________________________________ +void +FWPFCandidateWithHitsProxyBuilder::build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext* vc) +{ + // init PFCandiate collection + reco::PFCandidateCollection const * candidates = 0; + iItem->get( candidates ); + if( candidates == 0 ) return; + + Int_t idx = 0; + initPFRecHitsCollections(); + for( reco::PFCandidateCollection::const_iterator it = candidates->begin(), itEnd = candidates->end(); it != itEnd; ++it, ++idx) + { + TEveCompound* comp = createCompound(); + setupAddElement( comp, product ); + // printf("products size %d/%d \n", (int)iItem->size(), product->NumChildren()); + + const reco::PFCandidate& cand = *it; + + // track + { + TEveRecTrack t; + t.fBeta = 1.; + t.fP = TEveVector( cand.px(), cand.py(), cand.pz() ); + t.fV = TEveVector( cand.vertex().x(), cand.vertex().y(), cand.vertex().z() ); + t.fSign = cand.charge(); + TEveTrack* trk = new TEveTrack(&t, context().getTrackPropagator() ); + trk->MakeTrack(); + fireworks::setTrackTypePF( cand, trk ); + setupAddElement( trk, comp); + } + // hits + { + comp->SetMainColor(iItem->defaultDisplayProperties().color()); + addHitsForCandidate(cand, comp, vc); + } + + } +} + +//______________________________________________________________________________ +void FWPFCandidateWithHitsProxyBuilder::initPFRecHitsCollections() +{ + // ref hcal collections + edm::Handle handle_hits; + + + m_collectionHCAL =0; + try + { + std::string scc = item()->getConfig()->value(kRecHitCollectionName); + edm::InputTag tag(scc); + item()->getEvent()->getByLabel(tag, handle_hits); + if (handle_hits.isValid()) + { + m_collectionHCAL = &*handle_hits; + fwLog(fwlog::kInfo) <<"FWPFCandidateWithHitsProxyBuilder, item " << item()->name() <<": Accessed collection with name " << scc << "." << std::endl; + } + else + { + fwLog(fwlog::kError) <<"FWPFCandidateWithHitsProxyBuilder, item " << item()->name() <<": Failed to access collection with name " << scc << "." << std::endl; + } + } + catch (...) + { + fwLog(fwlog::kError) <<"FWPFCandidateWithHitsProxyBuilder, item " << item()->name() <<": Failed to access rechit collection \n"; + } +} + +//______________________________________________________________________________ +void FWPFCandidateWithHitsProxyBuilder::viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const reco::PFRecHit*) +{ + static TEveVector vtmp; + vtmp.Set(0.f, 0.f, 0.f); + for( unsigned int i = 0; i < 24; i += 3 ) + { + vtmp[0] += corners[i]; + vtmp[1] += corners[i + 1]; + vtmp[2] += corners[i + 2]; + } + vtmp *= 1.f/8.f; + + if (plotEt) + { + scale *= vtmp.Perp()/vtmp.Mag(); + } + + // Coordinates for a scaled version of the original box + for( unsigned int i = 0; i < 24; i += 3 ) + { + scaledCorners[i] = vtmp[0] + ( corners[i] - vtmp[0] ) * scale; + scaledCorners[i + 1] = vtmp[1] + ( corners[i + 1] - vtmp[1] ) * scale; + scaledCorners[i + 2] = vtmp[2] + ( corners[i + 2] - vtmp[2] ) * scale; + } +} + +//______________________________________________________________________________ +const reco::PFRecHit* FWPFCandidateWithHitsProxyBuilder::getHitForDetId(unsigned candIdx) +{ + + for (reco::PFRecHitCollection::const_iterator it = m_collectionHCAL->begin(); it != m_collectionHCAL->end(); ++it) + { + + if ( it->detId() == candIdx) + { + return &(*it); + } + } + return 0; +} + +//______________________________________________________________________________ +void FWPFCandidateWithHitsProxyBuilder::scaleProduct(TEveElementList* parent, FWViewType::EType type, const FWViewContext* vc) +{ + std::vector scaledCorners(24); + + float scale = vc->getEnergyScale()->getScaleFactor3D()/50; + for (TEveElement::List_i i=parent->BeginChildren(); i!=parent->EndChildren(); ++i) + { + if ((*i)->NumChildren() > 1) + { + TEveElement::List_i xx = (*i)->BeginChildren(); ++xx; + TEveBoxSet* boxset = dynamic_cast(*xx); + ++xx; + TEveStraightLineSet* lineset = dynamic_cast(*xx); + TEveChunkManager::iterator li(lineset->GetLinePlex()); + li.next(); + + + TEveChunkManager* plex = boxset->GetPlex(); + if (plex->N()) + { + for (int atomIdx=0; atomIdx < plex->Size(); ++atomIdx) + { + + TEveBoxSet::BFreeBox_t* atom = (TEveBoxSet::BFreeBox_t*)boxset->GetPlex()->Atom(atomIdx); + reco::PFRecHit* hit = (reco::PFRecHit*)boxset->GetUserData(atomIdx); + const float* corners = item()->getGeom()->getCorners(hit->detId()); + viewContextBoxScale(corners, hit->energy()*scale, vc->getEnergyScale()->getPlotEt(), scaledCorners, hit); + memcpy(atom->fVertices, &scaledCorners[0], sizeof(atom->fVertices)); + + editBoxInLineSet(li, &scaledCorners[0]); + } + + for (TEveProjectable::ProjList_i p = lineset->BeginProjecteds(); p != lineset->EndProjecteds(); ++p) + { + TEveStraightLineSetProjected* projLineSet = (TEveStraightLineSetProjected*)(*p); + projLineSet->UpdateProjection(); + } + } + } + } +} +//______________________________________________________________________________ +namespace { +TString boxset_tooltip_callback(TEveDigitSet* ds, Int_t idx) +{ + void* ud = ds->GetUserData(idx); + if (ud); + { + reco::PFRecHit* hit = (reco::PFRecHit*) ud; + // printf("idx %d %p hit data %p\n", idx, (void*)hit, ud); + if (hit) + return TString::Format("RecHit %d energy '%f'", idx, hit->energy()); + else + return "ERROR"; + } +} +} +//______________________________________________________________________________ +void FWPFCandidateWithHitsProxyBuilder::addHitsForCandidate(const reco::PFCandidate& cand, TEveElement* holder, const FWViewContext* vc) +{ + reco::PFCandidate::ElementsInBlocks eleInBlocks = cand.elementsInBlocks(); + + TEveBoxSet* boxset = 0; + TEveStraightLineSet* lineset = 0; + + for(unsigned elIdx=0; elIdx myBlock(blockRef.id(),blockRef.get(), blockRef.key()); + /* + if (myBlock->elements()[indexInBlock].type() == 1) + ieTrack = indexInBlock; + if (myBlock->elements()[indexInBlock].type() == 4) + ieECAL = indexInBlock; + */ + if (myBlock->elements()[indexInBlock].type() == 5) + ieHCAL = indexInBlock; + + + std::vector scaledCorners(24); + float scale = vc->getEnergyScale()->getScaleFactor3D()/50; + if (ieHCAL && m_collectionHCAL) { + reco::PFClusterRef hcalclusterRef=myBlock->elements()[ieHCAL].clusterRef(); + edm::Ptr myCluster(hcalclusterRef.id(),hcalclusterRef.get(), hcalclusterRef.key()); + if (myCluster.get()) + { + const std::vector< std::pair > & hitsandfracs = myCluster->hitsAndFractions(); + + if (!boxset) + { + boxset = new TEveBoxSet(); + boxset->Reset(TEveBoxSet::kBT_FreeBox, true, hitsandfracs.size()); + boxset->SetAntiFlick(true); + boxset->SetAlwaysSecSelect(1); + boxset->SetPickable(1); + boxset->SetTooltipCBFoo(boxset_tooltip_callback); + } + + if (!lineset) + { + lineset = new TEveStraightLineSet(); + } + + bool hitsFound = false; + for ( int ihandf=0, lastIdx=(int)(hitsandfracs.size()); ihandfgetCorners(hitDetId); + const reco::PFRecHit* hit = getHitForDetId(hitDetId); + if (hit) + { + viewContextBoxScale( corners, hit->energy()*scale, vc->getEnergyScale()->getPlotEt(), scaledCorners, hit); + boxset->AddBox( &scaledCorners[0]); + // setup last box + boxset->DigitColor(holder->GetMainColor()); + boxset->DigitUserData((void*)hit); + addBoxAsLines(lineset, &scaledCorners[0]); + hitsFound = true; + } + /* + // AMT: don't add lines if hit is not found becuse of unconsistency of scaling. + else + { + addBoxAsLines(lineset, corners); + } + */ + } + if (!hitsFound) + fwLog(fwlog::kWarning) << Form("Can't find matching hits with for HCAL block %d in RecHit collection. Number of hits %d.\n", elIdx, (int)hitsandfracs.size()); + + + } + else + { + fwLog(fwlog::kInfo) << "empty cluster \n"; + } + } + } // endloop cand.elementsInBlocks(); + + + if (boxset) { + boxset->RefitPlex(); + setupAddElement(boxset, holder); + } + + if (lineset) { + setupAddElement(lineset, holder); + } +} + +REGISTER_FWPROXYBUILDER(FWPFCandidateWithHitsProxyBuilder, reco::PFCandidateCollection,"PF CandidatesWithHits", FWViewType::kAll3DBits | FWViewType::kAllRPZBits ); diff --git a/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.h b/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.h new file mode 100644 index 0000000000000..5933614a711cc --- /dev/null +++ b/Fireworks/ParticleFlow/plugins/FWPFCandidateWithHitsProxyBuilder.h @@ -0,0 +1,39 @@ +#include "Fireworks/Core/interface/FWProxyBuilderBase.h" +//#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" +#include "DataFormats/ParticleFlowReco/interface/PFRecHit.h" +#include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h" +namespace reco +{ +class PFCandidate; +class PFRecHit; +} +class CaloRecHit; + +class FWPFCandidateWithHitsProxyBuilder : public FWProxyBuilderBase +{ +public: + FWPFCandidateWithHitsProxyBuilder() {} + virtual ~FWPFCandidateWithHitsProxyBuilder(){} + + virtual void build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*); + + virtual bool havePerViewProduct(FWViewType::EType) const { return true; } + + virtual void scaleProduct(TEveElementList* parent, FWViewType::EType type, const FWViewContext* vc); + + virtual void setItem(const FWEventItem* iItem); + + REGISTER_PROXYBUILDER_METHODS(); + +private: + FWPFCandidateWithHitsProxyBuilder( const FWPFCandidateWithHitsProxyBuilder& ); // Stop default + const FWPFCandidateWithHitsProxyBuilder& operator=( const FWPFCandidateWithHitsProxyBuilder& ); // Stop default + + void addHitsForCandidate(const reco::PFCandidate& c, TEveElement* holder, const FWViewContext* vc); + void initPFRecHitsCollections(); + const reco::PFRecHit* getHitForDetId(unsigned detId); + void viewContextBoxScale( const float* corners, float scale, bool plotEt, std::vector& scaledCorners, const reco::PFRecHit*); + + const reco::PFRecHitCollection *m_collectionHCAL; + +}; From ce6b4c15ea6937817790ffbb866646a7bb351118 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Oct 2013 14:12:54 +0200 Subject: [PATCH 13/45] tracker summary detid migration --- .../TrackerCommon/interface/ClusterSummary.h | 5 +- .../TrackerCommon/src/ClusterSummary.cc | 143 +++++------------- 2 files changed, 39 insertions(+), 109 deletions(-) diff --git a/DataFormats/TrackerCommon/interface/ClusterSummary.h b/DataFormats/TrackerCommon/interface/ClusterSummary.h index 3e51c369c6be7..8889be10ee3a2 100644 --- a/DataFormats/TrackerCommon/interface/ClusterSummary.h +++ b/DataFormats/TrackerCommon/interface/ClusterSummary.h @@ -118,6 +118,7 @@ The number of variables for each module is stored within iterator_ ********************************************************************************************/ +class TrackerTopology; class ClusterSummary { @@ -278,8 +279,8 @@ class ClusterSummary { public: ModuleSelection(std::string gs); virtual ~ModuleSelection(); - virtual std::pair IsStripSelected (int DetId); - virtual std::pair IsPixelSelected (int DetId); + virtual std::pair IsStripSelected (int DetId, const TrackerTopology *tTopo); + virtual std::pair IsPixelSelected (int DetId, const TrackerTopology *tTopo); private: std::string geosearch; // string of selected modules }; diff --git a/DataFormats/TrackerCommon/src/ClusterSummary.cc b/DataFormats/TrackerCommon/src/ClusterSummary.cc index c44c4ef7c72d4..61bf6d7bffb19 100644 --- a/DataFormats/TrackerCommon/src/ClusterSummary.cc +++ b/DataFormats/TrackerCommon/src/ClusterSummary.cc @@ -1,4 +1,5 @@ #include "DataFormats/TrackerCommon/interface/ClusterSummary.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" int ClusterSummary::GetModuleLocation ( int mod ) const { @@ -127,14 +128,13 @@ std::vector ClusterSummary::DecodeProvInfo(std::string ProvInfo) co -std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ +std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId, const TrackerTopology *tTopo){ // true if the module mod is among the selected modules. int isselected = 0; int enumVal = 99999; - SiStripDetId subdet(DetId); - int subdetid = subdet.subDetector(); + int subdetid = SiStripDetId(DetId).subDetector(); std::string::size_type result = geosearch.find("_"); @@ -150,15 +150,13 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ std::string Layer = modStr.substr(pos+1, modStr.length()); //find the Layer std::stringstream ss(Layer); - int layer_id = 0; + unsigned int layer_id = 0; ss >> layer_id; if (SiStripDetId::TIB == subdetid && Mod == "TIB"){ - TIBDetId tib(DetId); - int layer = tib.layer(); - if (layer_id == layer){ + if (layer_id == tTopo->tibLayer(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TIB_1; else if (layer_id == 2) enumVal = ClusterSummary::TIB_2; @@ -171,9 +169,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if (SiStripDetId::TOB == subdetid && Mod == "TOB"){ - TOBDetId tob(DetId); - int layer = tob.layer(); - if (layer_id == layer){ + if (layer_id == tTopo->tobLayer(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TOB_1; else if (layer_id == 2) enumVal = ClusterSummary::TOB_2; @@ -188,11 +184,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if (SiStripDetId::TEC == subdetid && Mod == "TECM"){ - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - int layerwheel = tec.wheel(); - - if (layer_id == layerwheel && side == -1){ + if (layer_id == tTopo->tecWheel(DetId) && tTopo->tecIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TECM_1; else if (layer_id == 2) enumVal = ClusterSummary::TECM_2; @@ -210,11 +202,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if (SiStripDetId::TEC == subdetid && Mod == "TECP"){ - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - int layerwheel = tec.wheel(); - - if (layer_id == layerwheel && side == 1){ + if (layer_id == tTopo->tecWheel(DetId) && !tTopo->tecIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TECP_1; else if (layer_id == 2) enumVal = ClusterSummary::TECP_2; @@ -233,11 +221,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ // TEC minus ring else if (SiStripDetId::TEC == subdetid && Mod == "TECMR"){ - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - int ring = tec.ringNumber(); - - if (layer_id == ring && side == -1){ + if (layer_id == tTopo->tecRing(DetId) && tTopo->tecIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TECMR_1; else if (layer_id == 2) enumVal = ClusterSummary::TECMR_2; @@ -254,10 +238,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ // TEC plus ring else if (SiStripDetId::TEC == subdetid && Mod == "TECPR"){ - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - int ring = tec.ringNumber(); - if (layer_id == ring && side == 1){ + if (layer_id == tTopo->tecRing(DetId) && !tTopo->tecIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TECPR_1; else if (layer_id == 2) enumVal = ClusterSummary::TECPR_2; @@ -273,12 +254,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if (SiStripDetId::TID == subdetid && Mod == "TIDM"){ - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - int layerwheel = tid.wheel(); - - if (layer_id == layerwheel && side == -1){ - + if (layer_id == tTopo->tidWheel(DetId) && tTopo->tidIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TIDM_1; else if (layer_id == 2) enumVal = ClusterSummary::TIDM_2; else if (layer_id == 3) enumVal = ClusterSummary::TIDM_3; @@ -289,12 +265,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if (SiStripDetId::TID == subdetid && Mod == "TIDP"){ - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - int layerwheel = tid.wheel(); - - if (layer_id == layerwheel && side == 1){ - + if (layer_id == tTopo->tidWheel(DetId) && !tTopo->tidIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TIDP_1; else if (layer_id == 2) enumVal = ClusterSummary::TIDP_2; else if (layer_id == 3) enumVal = ClusterSummary::TIDP_3; @@ -305,11 +276,8 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ // TID minus ring else if (SiStripDetId::TID == subdetid && Mod == "TIDMR"){ - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - int ring = tid.ringNumber(); - if (layer_id == ring && side == -1){ - + if (layer_id == tTopo->tidRing(DetId) && tTopo->tidIsZMinusSide(DetId)){ + if (layer_id == 1) enumVal = ClusterSummary::TIDMR_1; else if (layer_id == 2) enumVal = ClusterSummary::TIDMR_2; else if (layer_id == 3) enumVal = ClusterSummary::TIDMR_3; @@ -320,11 +288,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ // TID plus ring else if (SiStripDetId::TID == subdetid && Mod == "TIDPR"){ - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - int ring = tid.ringNumber(); - - if (layer_id == ring && side == 1){ + if (layer_id == tTopo->tidRing(DetId) && !tTopo->tidIsZMinusSide(DetId)){ if (layer_id == 1) enumVal = ClusterSummary::TIDPR_1; else if (layer_id == 2) enumVal = ClusterSummary::TIDPR_2; @@ -341,10 +305,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if( SiStripDetId::TEC == subdetid && geosearch.compare("TECM")==0 ) { - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - - if (side == -1){ + if (tTopo->tecIsZMinusSide(DetId)){ isselected = 1; enumVal = ClusterSummary::TECM; } @@ -352,10 +313,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if( SiStripDetId::TEC == subdetid && geosearch.compare("TECP")==0 ) { - TECDetId tec(DetId); - int side = (tec.isZMinusSide())?-1:1; - - if (side == 1){ + if (!tTopo->tecIsZMinusSide(DetId)){ isselected = 1; enumVal = ClusterSummary::TECP; } @@ -363,11 +321,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if( SiStripDetId::TID == subdetid && geosearch.compare("TIDM")==0 ) { - - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - - if (side == -1){ + if (tTopo->tidIsZMinusSide(DetId)){ isselected = 1; enumVal = ClusterSummary::TIDM; } @@ -376,10 +330,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ else if( SiStripDetId::TID == subdetid && geosearch.compare("TIDP")==0 ) { - TIDDetId tid(DetId); - int side = (tid.isZMinusSide())?-1:1; - - if (side == 1){ + if (!tTopo->tidIsZMinusSide(DetId)){ isselected = 1; enumVal = ClusterSummary::TIDP; } @@ -421,7 +372,7 @@ std::pair ClusterSummary::ModuleSelection::IsStripSelected(int DetId){ -std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ +std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid, const TrackerTopology *tTopo){ // true if the module mod is among the selected modules. int isselected = 0; @@ -443,7 +394,7 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ std::string Layer = modStr.substr(pos+1, modStr.length()); //find the Layer std::stringstream ss(Layer); - int layer_id = 0; + unsigned int layer_id = 0; ss >> layer_id; @@ -453,11 +404,7 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ if (subdetid == 1 && Mod == "BPIX"){ - PXBDetId pdetId = PXBDetId(detid); - // Barell layer = 1,2,3 - int layer=pdetId.layer(); - - if (layer_id == layer){ + if (layer_id == tTopo->pxbLayer(detid)) { if (layer_id == 1) enumVal = ClusterSummary::BPIX_1; else if (layer_id == 2) enumVal = ClusterSummary::BPIX_2; @@ -472,14 +419,11 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ ****/ else if (subdetid == 2 && Mod == "FPIX"){ - PXFDetId pdetId = PXFDetId(detid); - int disk=pdetId.disk(); //1,2,3 - - if (layer_id == disk){ + if (layer_id == tTopo->pxfDisk(detid)) { - if (disk == 1) enumVal = ClusterSummary::FPIX_1; - else if (disk == 2) enumVal = ClusterSummary::FPIX_2; - else if (disk == 3) enumVal = ClusterSummary::FPIX_3; + if (layer_id == 1) enumVal = ClusterSummary::FPIX_1; + else if (layer_id == 2) enumVal = ClusterSummary::FPIX_2; + else if (layer_id == 3) enumVal = ClusterSummary::FPIX_3; isselected = 1; @@ -492,15 +436,11 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ else if (subdetid == 2 && Mod == "FPIXM"){ - PXFDetId pdetId = PXFDetId(detid); - int side=pdetId.side(); //size=1 for -z, 2 for +z - int disk=pdetId.disk(); //1,2,3 + if (layer_id == tTopo->pxfDisk(detid) && tTopo->pxfSide(detid)==1) { - if (layer_id == disk && side == 1 ){ - - if (disk == 1) enumVal = ClusterSummary::FPIXM_1; - else if (disk == 2) enumVal = ClusterSummary::FPIXM_2; - else if (disk == 3) enumVal = ClusterSummary::FPIXM_3; + if (layer_id == 1) enumVal = ClusterSummary::FPIXM_1; + else if (layer_id == 2) enumVal = ClusterSummary::FPIXM_2; + else if (layer_id == 3) enumVal = ClusterSummary::FPIXM_3; isselected = 1; @@ -508,16 +448,11 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ } else if (subdetid == 2 && Mod == "FPIXP"){ - - PXFDetId pdetId = PXFDetId(detid); - int side=pdetId.side(); //size=1 for -z, 2 for +z - int disk=pdetId.disk(); //1,2,3 - - if (layer_id == disk && side == 2){ + if (layer_id == tTopo->pxfDisk(detid) && tTopo->pxfSide(detid)==2) { - if (disk == 1) enumVal = ClusterSummary::FPIXP_1; - else if (disk == 2) enumVal = ClusterSummary::FPIXP_2; - else if (disk == 3) enumVal = ClusterSummary::FPIXP_3; + if (layer_id == 1) enumVal = ClusterSummary::FPIXP_1; + else if (layer_id == 2) enumVal = ClusterSummary::FPIXP_2; + else if (layer_id == 3) enumVal = ClusterSummary::FPIXP_3; isselected = 1; @@ -531,10 +466,7 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ else if( subdetid == 2 && geosearch.compare("FPIXM")==0 ) { - PXFDetId pdetId = PXFDetId(detid); - int side=pdetId.side(); //size=1 for -z, 2 for +z - - if (side == 1){ + if (tTopo->pxfSide(detid) ==1) { isselected = 1; enumVal = ClusterSummary::FPIXM; } @@ -542,10 +474,7 @@ std::pair ClusterSummary::ModuleSelection::IsPixelSelected(int detid){ else if( subdetid == 2 && geosearch.compare("FPIXP")==0 ) { - PXFDetId pdetId = PXFDetId(detid); - int side=pdetId.side(); //size=1 for -z, 2 for +z - - if (side == 2){ + if (tTopo->pxfSide(detid) ==2) { isselected = 1; enumVal = ClusterSummary::FPIXP; } From 419c153fa632b47d7343dffedcf11ca9e619eac7 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Oct 2013 14:13:23 +0200 Subject: [PATCH 14/45] tracker summary detid migration --- .../src/ClusterSummaryProducer.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/RecoLocalTracker/SubCollectionProducers/src/ClusterSummaryProducer.cc b/RecoLocalTracker/SubCollectionProducers/src/ClusterSummaryProducer.cc index bdc8575356109..d505bdccbe37a 100644 --- a/RecoLocalTracker/SubCollectionProducers/src/ClusterSummaryProducer.cc +++ b/RecoLocalTracker/SubCollectionProducers/src/ClusterSummaryProducer.cc @@ -1,4 +1,6 @@ #include "RecoLocalTracker/SubCollectionProducers/interface/ClusterSummaryProducer.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" +#include "Geometry/Records/interface/IdealGeometryRecord.h" ClusterSummaryProducer::ClusterSummaryProducer(const edm::ParameterSet& iConfig) : stripClustersLabel(iConfig.getParameter("stripClusters")), @@ -26,6 +28,12 @@ ClusterSummaryProducer::ClusterSummaryProducer(const edm::ParameterSet& iConfig) void ClusterSummaryProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { + //Retrieve tracker topology from geometry + edm::ESHandle tTopoHandle; + iSetup.get().get(tTopoHandle); + const TrackerTopology* tTopo = tTopoHandle.product(); + + using namespace edm; cCluster.ClearUserModules(); @@ -60,7 +68,7 @@ ClusterSummaryProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetu // For each ModuleSelector, check if the detID belongs to a desired module. If so, update the summary information for that module - std::pair ModSelect = ModuleSelectionVect.at(i) -> IsStripSelected( id ); + std::pair ModSelect = ModuleSelectionVect.at(i) -> IsStripSelected( id,tTopo ); int mod_pair = ModSelect.first; int mod_pair2 = ModSelect.second; @@ -117,7 +125,7 @@ ClusterSummaryProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetu // For each ModuleSelector, check if the detID belongs to a desired module. If so, update the summary information for that module - std::pair ModSelectPixel = ModuleSelectionVectPixels.at(i) -> IsPixelSelected( detid ); + std::pair ModSelectPixel = ModuleSelectionVectPixels.at(i) -> IsPixelSelected( detid,tTopo ); int mod_pair = ModSelectPixel.first; int mod_pair2 = ModSelectPixel.second; if ( mod_pair ){ From 463790459aa066ae15963efa8acdd43f3a709616 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 18 Oct 2013 14:14:48 +0200 Subject: [PATCH 15/45] tracker detid migration --- TrackingTools/TrackAssociator/BuildFile.xml | 1 + .../TrackAssociator/interface/DetIdInfo.h | 8 +++-- .../TrackAssociator/src/DetIdAssociator.cc | 2 +- .../TrackAssociator/src/DetIdInfo.cc | 29 ++++++++++--------- .../TrackAssociator/src/TrackDetMatchInfo.cc | 16 +++++----- .../src/TrackDetectorAssociator.cc | 12 ++++---- 6 files changed, 37 insertions(+), 31 deletions(-) diff --git a/TrackingTools/TrackAssociator/BuildFile.xml b/TrackingTools/TrackAssociator/BuildFile.xml index 4cda78cdea574..73fc160e72565 100644 --- a/TrackingTools/TrackAssociator/BuildFile.xml +++ b/TrackingTools/TrackAssociator/BuildFile.xml @@ -31,6 +31,7 @@ + diff --git a/TrackingTools/TrackAssociator/interface/DetIdInfo.h b/TrackingTools/TrackAssociator/interface/DetIdInfo.h index 91e87ce6a0c38..549310087232d 100644 --- a/TrackingTools/TrackAssociator/interface/DetIdInfo.h +++ b/TrackingTools/TrackAssociator/interface/DetIdInfo.h @@ -12,10 +12,12 @@ #include #include +class TrackerTopology; + class DetIdInfo { public: - static std::string info( const DetId& ); - static std::string info( const std::set& ); - static std::string info( const std::vector& ); + static std::string info( const DetId&, const TrackerTopology *tTopo ); + static std::string info( const std::set&, const TrackerTopology *tTopo ); + static std::string info( const std::vector&, const TrackerTopology *tTopo ); }; #endif diff --git a/TrackingTools/TrackAssociator/src/DetIdAssociator.cc b/TrackingTools/TrackAssociator/src/DetIdAssociator.cc index e165d6104ba98..56166674a96fa 100644 --- a/TrackingTools/TrackAssociator/src/DetIdAssociator.cc +++ b/TrackingTools/TrackAssociator/src/DetIdAssociator.cc @@ -174,7 +174,7 @@ void DetIdAssociator::buildMap() // FIX ME: this should be a fatal error if(edm::isNotFinite(iter->mag())||iter->mag()>1e5) { //Detector parts cannot be 1 km away or be NaN edm::LogWarning("TrackAssociator") << "Critical error! Bad detector unit geometry:\n\tDetId:" - << id_itr->rawId() << "\t mag(): " << iter->mag() << "\n" << DetIdInfo::info( *id_itr ) + << id_itr->rawId() << "\t mag(): " << iter->mag() << "\n" << DetIdInfo::info( *id_itr,0 ) << "\nSkipped the element"; continue; } diff --git a/TrackingTools/TrackAssociator/src/DetIdInfo.cc b/TrackingTools/TrackAssociator/src/DetIdInfo.cc index 443995ed42fe0..c52fcf93bb6e2 100644 --- a/TrackingTools/TrackAssociator/src/DetIdInfo.cc +++ b/TrackingTools/TrackAssociator/src/DetIdInfo.cc @@ -4,6 +4,7 @@ #include "DataFormats/MuonDetId/interface/DTChamberId.h" #include "DataFormats/MuonDetId/interface/CSCDetId.h" #include "DataFormats/MuonDetId/interface/RPCDetId.h" +#include "DataFormats/TrackerCommon/interface/TrackerTopology.h" #include "DataFormats/EcalDetId/interface/EcalSubdetector.h" #include "DataFormats/EcalDetId/interface/EEDetId.h" @@ -25,7 +26,7 @@ #include -std::string DetIdInfo::info(const DetId& id) { +std::string DetIdInfo::info(const DetId& id, const TrackerTopology *tTopo) { std::ostringstream oss; oss << "DetId: " << id.rawId() << "\n"; @@ -36,36 +37,38 @@ std::string DetIdInfo::info(const DetId& id) { switch ( id.subdetId() ) { case StripSubdetector::TIB: { - oss <<"TIB "<layer(id); + break; case DetId::Muon: switch ( id.subdetId() ) { @@ -209,21 +212,21 @@ std::string DetIdInfo::info(const DetId& id) { } -std::string DetIdInfo::info(const std::set& idSet) { +std::string DetIdInfo::info(const std::set& idSet, const TrackerTopology *tTopo) { std::string text; for(std::set::const_iterator id = idSet.begin(); id != idSet.end(); id++) { - text += info(*id); + text += info(*id, tTopo); text += "\n"; } return text; } -std::string DetIdInfo::info(const std::vector& idSet) { +std::string DetIdInfo::info(const std::vector& idSet, const TrackerTopology *tTopo) { std::string text; for(std::vector::const_iterator id = idSet.begin(); id != idSet.end(); id++) { - text += info(*id); + text += info(*id, tTopo); text += "\n"; } return text; diff --git a/TrackingTools/TrackAssociator/src/TrackDetMatchInfo.cc b/TrackingTools/TrackAssociator/src/TrackDetMatchInfo.cc index 3de2e31a235df..4675a1b5f2e25 100644 --- a/TrackingTools/TrackAssociator/src/TrackDetMatchInfo.cc +++ b/TrackingTools/TrackAssociator/src/TrackDetMatchInfo.cc @@ -172,7 +172,7 @@ double TrackDetMatchInfo::nXnEnergy(const DetId& id, EnergyType type, int gridSi { if ( id.det() != DetId::Calo ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected CaloTower, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } CaloTowerDetId centerId(id); for(std::vector::const_iterator hit=towers.begin(); hit!=towers.end(); hit++) { @@ -206,7 +206,7 @@ double TrackDetMatchInfo::nXnEnergy(const DetId& id, EnergyType type, int gridSi { if( id.det() != DetId::Ecal || (id.subdetId() != EcalBarrel && id.subdetId() != EcalEndcap) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected EcalBarrel or EcalEndcap, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } // Since the ECAL granularity is small and the gap between EE and EB is significant, // energy is computed only within the system that contains the central element @@ -242,7 +242,7 @@ double TrackDetMatchInfo::nXnEnergy(const DetId& id, EnergyType type, int gridSi { if( id.det() != DetId::Hcal || (id.subdetId() != HcalBarrel && id.subdetId() != HcalEndcap) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected HE or HB, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } HcalDetId centerId(id); for(std::vector::const_iterator hit=hcalRecHits.begin(); hit!=hcalRecHits.end(); hit++) { @@ -261,7 +261,7 @@ double TrackDetMatchInfo::nXnEnergy(const DetId& id, EnergyType type, int gridSi { if( id.det() != DetId::Hcal || (id.subdetId() != HcalOuter) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected HO, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } HcalDetId centerId(id); for(std::vector::const_iterator hit=hoRecHits.begin(); hit!=hoRecHits.end(); hit++) { @@ -409,7 +409,7 @@ DetId TrackDetMatchInfo::findMaxDeposition(const DetId& id, EnergyType type, int { if ( id.det() != DetId::Calo ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected CaloTower, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } CaloTowerDetId centerId(id); for(std::vector::const_iterator hit=towers.begin(); hit!=towers.end(); hit++) { @@ -455,7 +455,7 @@ DetId TrackDetMatchInfo::findMaxDeposition(const DetId& id, EnergyType type, int { if( id.det() != DetId::Ecal || (id.subdetId() != EcalBarrel && id.subdetId() != EcalEndcap) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected EcalBarrel or EcalEndcap, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } // Since the ECAL granularity is small and the gap between EE and EB is significant, // energy is computed only within the system that contains the central element @@ -497,7 +497,7 @@ DetId TrackDetMatchInfo::findMaxDeposition(const DetId& id, EnergyType type, int { if( id.det() != DetId::Hcal || (id.subdetId() != HcalBarrel && id.subdetId() != HcalEndcap) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected HE or HB, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } HcalDetId centerId(id); for(std::vector::const_iterator hit=hcalRecHits.begin(); hit!=hcalRecHits.end(); hit++) { @@ -519,7 +519,7 @@ DetId TrackDetMatchInfo::findMaxDeposition(const DetId& id, EnergyType type, int { if( id.det() != DetId::Hcal || (id.subdetId() != HcalOuter) ) { throw cms::Exception("FatalError") << "Wrong DetId. Expected HO, but found:\n" << - DetIdInfo::info(id)<<"\n"; + DetIdInfo::info(id,0)<<"\n"; } HcalDetId centerId(id); for(std::vector::const_iterator hit=hoRecHits.begin(); hit!=hoRecHits.end(); hit++) { diff --git a/TrackingTools/TrackAssociator/src/TrackDetectorAssociator.cc b/TrackingTools/TrackAssociator/src/TrackDetectorAssociator.cc index c9e039a88208b..5bd9b744aa00e 100644 --- a/TrackingTools/TrackAssociator/src/TrackDetectorAssociator.cc +++ b/TrackingTools/TrackAssociator/src/TrackDetectorAssociator.cc @@ -483,12 +483,12 @@ void TrackDetectorAssociator::fillHcal( const edm::Event& iEvent, idsInRegion = hcalDetIdAssociator_->getDetIdsCloseToAPoint(coreTrajectory[0], mapRange); } else idsInRegion = hcalDetIdAssociator_->getDetIdsCloseToAPoint(coreTrajectory[0], parameters.dRHcalPreselection); - LogTrace("TrackAssociator") << "HCAL hits in the region: " << idsInRegion.size() << "\n" << DetIdInfo::info(idsInRegion); + LogTrace("TrackAssociator") << "HCAL hits in the region: " << idsInRegion.size() << "\n" << DetIdInfo::info(idsInRegion,0); std::set idsInACone = hcalDetIdAssociator_->getDetIdsInACone(idsInRegion, coreTrajectory, parameters.dRHcal); - LogTrace("TrackAssociator") << "HCAL hits in the cone: " << idsInACone.size() << "\n" << DetIdInfo::info(idsInACone); + LogTrace("TrackAssociator") << "HCAL hits in the cone: " << idsInACone.size() << "\n" << DetIdInfo::info(idsInACone,0); std::vector crossedIds = hcalDetIdAssociator_->getCrossedDetIds(idsInRegion, coreTrajectory); - LogTrace("TrackAssociator") << "HCAL hits crossed: " << crossedIds.size() << "\n" << DetIdInfo::info(crossedIds); + LogTrace("TrackAssociator") << "HCAL hits crossed: " << crossedIds.size() << "\n" << DetIdInfo::info(crossedIds,0); info.crossedHcalIds = crossedIds; // timers.pop_and_push("TrackDetectorAssociator::fillHcal::addCrossedHits"); @@ -701,7 +701,7 @@ void TrackDetectorAssociator::getTAMuonChamberMatches(std::vectorsurface() ); if (! stateOnSurface.isValid()) { LogTrace("TrackAssociator") << "Failed to propagate the track; moving on\n\t"<< - "Element is not crosssed: " << DetIdInfo::info(*detId) << "\n"; + "Element is not crosssed: " << DetIdInfo::info(*detId,0) << "\n"; continue; } // timers.pop_and_push("MuonDetIdAssociator::getTrajectoryInMuonDetector::matching::geometryAccess",TimerStack::FastMonitoring); @@ -755,7 +755,7 @@ void TrackDetectorAssociator::getTAMuonChamberMatches(std::vector Date: Fri, 18 Oct 2013 14:38:06 +0200 Subject: [PATCH 16/45] initial cleanup attempt --- .../Configuration/python/combinedCustoms.py | 290 +++++++++--------- .../Configuration/python/customise_mixing.py | 17 - .../Configuration/python/phase1TkCustoms.py | 9 - .../python/phase2TkCustomsBE5D.py | 2 +- 4 files changed, 146 insertions(+), 172 deletions(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py index 464811ba12b6d..8e9e46076d5d7 100644 --- a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py @@ -47,14 +47,14 @@ def cust_2017(process): process=customisePostLS1(process) process=customisePhase1Tk(process) process=customise_HcalPhase0(process) - process=fixRPCConditions(process) +# process=fixRPCConditions(process) return process def cust_2019(process): process=customisePostLS1(process) process=customisePhase1Tk(process) process=customise_HcalPhase1(process) - process=fixRPCConditions(process) +# process=fixRPCConditions(process) return process def cust_2019WithGem(process): @@ -67,17 +67,17 @@ def noCrossing(process): return process -def fixRPCConditions(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("RPCStripNoisesRcd"), - tag = cms.string("RPCStripNoise_upscope_mc_v2"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_31X_RPC") - ) - ) - ) - return process +#def fixRPCConditions(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("RPCStripNoisesRcd"), +# tag = cms.string("RPCStripNoise_upscope_mc_v2"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_31X_RPC") +# ) +# ) +# ) +# return process ##### clone aging.py here def agePixel(process,lumi): @@ -185,138 +185,138 @@ def ecal_complete_aging_3000(process): process=aging.ecal_complete_aging_3000(process) return process -def fixEcalConditions_150(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL150_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_100(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL100_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_200(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL200_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_300(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL300_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_500(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL500_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_1000(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL1000_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_3GeV_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process - -def fixEcalConditions_3000(process): - if not hasattr(process.GlobalTag,'toGet'): - process.GlobalTag.toGet=cms.VPSet() - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalSRSettingsRcd"), - tag = cms.string("EcalSRSettings_TL3000_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - process.GlobalTag.toGet.extend( cms.VPSet( - cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), - tag = cms.string("EcalTPGLutIdMap_beamv5_4GeV_upgrade_mc"), - connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") - ) - ) - ) - return process +#def fixEcalConditions_150(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL150_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_100(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL100_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_200(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL200_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_300(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL300_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_500(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL500_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_1000(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL1000_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_3GeV_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process +# +#def fixEcalConditions_3000(process): +# if not hasattr(process.GlobalTag,'toGet'): +# process.GlobalTag.toGet=cms.VPSet() +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalSRSettingsRcd"), +# tag = cms.string("EcalSRSettings_TL3000_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# process.GlobalTag.toGet.extend( cms.VPSet( +# cms.PSet(record = cms.string("EcalTPGLutIdMapRcd"), +# tag = cms.string("EcalTPGLutIdMap_beamv5_4GeV_upgrade_mc"), +# connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_34X_ECAL") +# ) +# ) +# ) +# return process def fastsimDefault(process): return fastCustomiseDefault(process) diff --git a/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py b/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py index 66f499040bc67..191793539ad9a 100644 --- a/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py +++ b/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py @@ -1,22 +1,5 @@ import FWCore.ParameterSet.Config as cms -#this is obsolete I think -def customise_pixelMixing(process): - process.mix.digitizers.pixel.MissCalibrate = False - process.mix.digitizers.pixel.LorentzAngle_DB = False - process.mix.digitizers.pixel.killModules = False - process.mix.digitizers.pixel.useDB = False - process.mix.digitizers.pixel.DeadModules_DB = False - process.mix.digitizers.pixel.NumPixelBarrel = cms.int32(4) - process.mix.digitizers.pixel.NumPixelEndcap = cms.int32(3) - process.mix.digitizers.pixel.ThresholdInElectrons_FPix = cms.double(2000.0) - process.mix.digitizers.pixel.ThresholdInElectrons_BPix = cms.double(2000.0) - process.mix.digitizers.pixel.ThresholdInElectrons_BPix_L1 = cms.double(2000.0) - process.mix.digitizers.pixel.thePixelColEfficiency_BPix4 = cms.double(0.999) - process.mix.digitizers.pixel.thePixelEfficiency_BPix4 = cms.double(0.999) - process.mix.digitizers.pixel.thePixelChipEfficiency_BPix4 = cms.double(0.999) - return (process) - # Remove the Crossing Frames to save memory def customise_NoCrossing(process): process.mix.mixObjects.mixSH.crossingFrames = cms.untracked.vstring( diff --git a/SLHCUpgradeSimulations/Configuration/python/phase1TkCustoms.py b/SLHCUpgradeSimulations/Configuration/python/phase1TkCustoms.py index 44bc49b4b30c9..ab4645f8f4e86 100644 --- a/SLHCUpgradeSimulations/Configuration/python/phase1TkCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/phase1TkCustoms.py @@ -69,16 +69,8 @@ def customise_Digi(process): # DQM steps change def customise_DQM(process,pileup): # We cut down the number of iterative tracking steps -# process.dqmoffline_step.remove(process.TrackMonStep3) -# process.dqmoffline_step.remove(process.TrackMonStep4) -# process.dqmoffline_step.remove(process.TrackMonStep5) -# process.dqmoffline_step.remove(process.TrackMonStep6) - # process.dqmoffline_step.remove(process.muonAnalyzer) process.dqmoffline_step.remove(process.jetMETAnalyzer) -# process.dqmoffline_step.remove(process.TrackMonStep9) -# process.dqmoffline_step.remove(process.TrackMonStep10) -# process.dqmoffline_step.remove(process.PixelTrackingRecHitsValid) #put isUpgrade flag==true process.SiPixelRawDataErrorSource.isUpgrade = cms.untracked.bool(True) @@ -133,7 +125,6 @@ def customise_harvesting(process): return (process) def customise_condOverRides(process): -# process.load('SLHCUpgradeSimulations.Geometry.fakeConditions_Phase1_R30F12_cff') process.trackerTopologyConstants.pxb_layerStartBit = cms.uint32(20) process.trackerTopologyConstants.pxb_ladderStartBit = cms.uint32(12) process.trackerTopologyConstants.pxb_moduleStartBit = cms.uint32(2) diff --git a/SLHCUpgradeSimulations/Configuration/python/phase2TkCustomsBE5D.py b/SLHCUpgradeSimulations/Configuration/python/phase2TkCustomsBE5D.py index 07197c655a54f..4d25858fcf933 100644 --- a/SLHCUpgradeSimulations/Configuration/python/phase2TkCustomsBE5D.py +++ b/SLHCUpgradeSimulations/Configuration/python/phase2TkCustomsBE5D.py @@ -127,7 +127,7 @@ def customise_Reco(process,pileup): del process.muonSeededStepExtra del process.muonSeededStep del process.muonSeededStepDebug - + # add the correct tracking back in process.load("RecoTracker.Configuration.RecoTrackerPhase2BE_cff") From 5f75571065c8d8a6238a55e7057d3e385617a4bd Mon Sep 17 00:00:00 2001 From: Jake Date: Tue, 22 Oct 2013 13:07:13 -0500 Subject: [PATCH 17/45] Hcal TDC fixes for upgrade relsease --- .../HcalAlgos/src/HcalPulseShapes.cc | 149 ++++++++++++++++-- CalibFormats/CaloObjects/src/CaloSamples.cc | 14 +- RecoLocalCalo/HcalRecAlgos/src/HcalTDCReco.cc | 105 ++++++------ .../python/HBHEUpgradeReconstructor_cfi.py | 28 ++-- .../HcalSimAlgos/interface/HcalSiPMShape.h | 9 +- .../interface/HcalSimParameters.h | 2 + .../HcalSimAlgos/interface/HcalTDC.h | 5 + .../HcalSimAlgos/src/HcalElectronicsSim.cc | 1 + .../HcalSimAlgos/src/HcalSiPMHitResponse.cc | 51 ++++-- .../HcalSimAlgos/src/HcalSiPMShape.cc | 41 ++++- .../HcalSimAlgos/src/HcalSimParameters.cc | 5 +- SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc | 73 ++++++--- .../python/hcalSimParameters_cfi.py | 9 +- 13 files changed, 369 insertions(+), 123 deletions(-) diff --git a/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc b/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc index 4dfe347fa1cbf..e4810a46ab3ca 100644 --- a/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc +++ b/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc @@ -286,19 +286,145 @@ void HcalPulseShapes::computeHFShape() { void HcalPulseShapes::computeSiPMShape() { - unsigned int nbin = 100; // to avoid big drop of integral for previous 512 - // due to negative afterpulse (May 6, 2013. S.Abdullin) + + unsigned int nbin = 128; + +//From Jake Anderson: numberical convolution of SiPMs WLC shapes + std::vector nt = { + 2.782980485851731e-6, + 4.518134885954626e-5, + 2.7689305197392056e-4, + 9.18328418900969e-4, + .002110072599166349, + .003867856860331454, + .006120046224897771, + .008754774090536956, + 0.0116469503358586, + .01467007449455966, + .01770489955229477, + .02064621450689512, + .02340678093764222, + .02591874610854916, + .02813325527435303, + 0.0300189241965647, + .03155968107671164, + .03275234052577155, + .03360415306318798, + .03413048377960748, + .03435270899678218, + .03429637464659661, + .03398962975487166, + .03346192884394954, + .03274298516247742, + .03186195009136525, + .03084679116113031, + 0.0297238406141036, + .02851748748929785, + .02724998816332392, + .02594137274487424, + .02460942736731527, + .02326973510736116, + .02193576080366117, + 0.0206189674254987, + .01932895378564653, + 0.0180736052958666, + .01685925112650875, + 0.0156908225633535, + .01457200857138456, + .01350540559602467, + .01249265947824805, + .01153459805300423, + .01063135355597282, + .009782474412011936, + .008987026319784546, + 0.00824368281357106, + .007550805679909604, + .006906515742762193, + .006308754629755056, + .005755338185695127, + .005244002229973356, + .004772441359900532, + .004338341490928299, + .003939406800854143, + 0.00357338171220501, + 0.0032380685079891, + .002931341133259233, + .002651155690306086, + .002395558090237333, + .002162689279320922, + .001950788415487319, + .001758194329648101, + .001583345567913682, + .001424779275191974, + .001281129147671334, + 0.00115112265163774, + .001033577678808199, + 9.273987838127585e-4, + 8.315731274976846e-4, + 7.451662302008696e-4, + 6.673176219006913e-4, + 5.972364609644049e-4, + 5.341971801529036e-4, + 4.775352065178378e-4, + 4.266427928961177e-4, + 3.8096498904225923e-4, + 3.3999577417327287e-4, + 3.032743659102713e-4, + 2.703817158798329e-4, + 2.4093719775272793e-4, + 2.145954900503894e-4, + 1.9104365317752797e-4, + 1.6999839784346724e-4, + 1.5120354022478893e-4, + 1.3442763782650755e-4, + 1.1946179895521507e-4, + 1.0611765796993575e-4, + 9.422550797617687e-5, + 8.363258233342666e-5, + 7.420147621931836e-5, + 6.580869950304933e-5, + 5.834335229919868e-5, + 5.17059147771959e-5, + 4.5807143072062634e-5, + 4.0567063461299446e-5, + 3.591405732740723e-5, + 3.178402980354131e-5, + 2.811965539165646e-5, + 2.4869694240316126e-5, + 2.1988373166730962e-5, + 1.9434825899529382e-5, + 1.717258740121378e-5, + 1.5169137499243157e-5, + 1.339548941011129e-5, + 1.1825819079078403e-5, + 1.0437131581057595e-5, + 9.208961130078894e-6, + 8.12310153137994e-6, + 7.163364176588591e-6, + 6.315360932244386e-6, + 5.566309502463164e-6, + 4.904859063429651e-6, + 4.320934164082596e-6, + 3.8055950719111903e-6, + 3.350912911083174e-6, + 2.9498580949517117e-6, + 2.596200697612328e-6, + 2.2844215378879293e-6, + 2.0096328693141094e-6, + 1.7675076766686654e-6, + 1.5542166787225756e-6, + 1.366372225473431e-6, + 1.200978365778838e-6, + 1.0553864128982371e-6, + 9.272554464808518e-7, + 8.145171945902259e-7, + 7.153448381918271e-7 + }; + siPMShape_.setNBin(nbin); - std::vector nt(nbin,0.0); // double norm = 0.; for (unsigned int j = 0; j < nbin; ++j) { - if (j <= 31.) - nt[j] = 2.15*j; - else if ((j > 31) && (j <= 96)) - nt[j] = 102.1 - 1.12*j; - else - nt[j] = 0.0076*j - 6.4; norm += (nt[j]>0) ? nt[j] : 0.; } @@ -308,6 +434,11 @@ void HcalPulseShapes::computeSiPMShape() } } +double HcalPulseShapes::gexp(double t, double A, double c, double t0, double s) { + static double const root2(sqrt(2)); + return -A*0.5*exp(c*t+0.5*c*c*s*s-c*s)*(erf(-0.5*root2/s*(t-t0+c*s*s))-1); +} + const HcalPulseShapes::Shape & HcalPulseShapes::getShape(int shapeType) const diff --git a/CalibFormats/CaloObjects/src/CaloSamples.cc b/CalibFormats/CaloObjects/src/CaloSamples.cc index 9c958017cc0c0..9eb9c28b99641 100644 --- a/CalibFormats/CaloObjects/src/CaloSamples.cc +++ b/CalibFormats/CaloObjects/src/CaloSamples.cc @@ -102,20 +102,20 @@ CaloSamples::setBlank() // keep id, presamples, size but zero out data } std::ostream& operator<<(std::ostream& s, const CaloSamples& samples) { - s << "DetId=" << samples.id(); + s << "DetId " << samples.id(); // print out every so many precise samples float preciseStep = samples.preciseSize()/samples.size(); s << ", "<< samples.size() << " samples"; if (preciseStep > 0) s << ", " << samples.preciseSize() << " preciseSamples" - << ", " << preciseStep << " precise step"; + << ", " << preciseStep << " preciseStep"; s << '\n'; for (int i=0; i> 7) & 0x7F; - */ - // temporary "unpacking" instead, which directly corresponds to - // SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc (nibs = 50...) - // packedTDC = TDC_RisingEdge + (tdcBins*2) * TDC_FallingEdge; - unsigned rising = tdc%100; - unsigned falling = tdc/100; - - // only set the first time, avoiding "special" codes - if(risingTime < -998. && rising != 62 && rising != 63) { - risingTime = rising*25./nbins + (i-signalBX)*25.; - } - if(fallingTime < -998. && falling != 62 && falling != 63) { - fallingTime = falling*25./nbins + (i-signalBX)*25.; - } - - /* - std::cout << " digi.tdc[" << i << "] = " << tdc - << " rising = " << rising << " falling = " << falling - << " Rt = " << risingTime - << " Ft = " << fallingTime - << std::endl; - */ - } - recHit = HBHERecHit(recHit.id(), recHit.energy(), risingTime, fallingTime); -} +#include "RecoLocalCalo/HcalRecAlgos/src/HcalTDCReco.h" +#include "DataFormats/HcalDigi/interface/HcalUpgradeDataFrame.h" +#include "DataFormats/HcalRecHit/interface/HBHERecHit.h" + +HcalTDCReco::HcalTDCReco() +{} + +void HcalTDCReco::reconstruct(const HcalUpgradeDataFrame & digi, + HBHERecHit & recHit) const +{ + int n = digi.size(); + double risingTime = -999.; + double fallingTime = -999.; + int signalBX = 4; // NB: HARDWIRED !!! + int nbins = 50; // as in HcalTDCParameters.h (SimCalorimetry/HcalSimAlgos) + int direction(-1), stepSize(1); // where to go after signalBX + // start at bunch crossing 3 by default + int i(signalBX); + + // for(int i = 3; i < n; ++i) + while ((i > 2) && (i < 8) && (i < n) && + ((risingTime < -998.) || (fallingTime < 998.))) + { + unsigned tdc = digi.tdc(i); + + /* + unsigned rising = tdc & 0x7F; + unsigned falling = (tdc >> 7) & 0x7F; + */ + // temporary "unpacking" instead, which directly corresponds to + // SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc (nibs = 50...) + // packedTDC = TDC_RisingEdge + (tdcBins*2) * TDC_FallingEdge; + unsigned rising = tdc%100; + unsigned falling = tdc/100; + + // only set the first time, avoiding "special" codes + if(risingTime < -998. && rising != 62 && rising != 63) { + risingTime = rising*25./nbins + (i-signalBX)*25.; + } + if(((fallingTime < -998.) || (fallingTime < risingTime)) && + (falling != 62) && (falling != 63)) { + fallingTime = falling*25./nbins + (i-signalBX)*25.; + } + + i += direction*stepSize; + ++stepSize; + direction *= -1; + /* + std::cout << " digi.tdc[" << i << "] = " << tdc + << " rising = " << rising << " falling = " << falling + << " Rt = " << risingTime + << " Ft = " << fallingTime + << std::endl; + */ + } + recHit = HBHERecHit(recHit.id(), recHit.energy(), risingTime, fallingTime); +} diff --git a/RecoLocalCalo/HcalRecProducers/python/HBHEUpgradeReconstructor_cfi.py b/RecoLocalCalo/HcalRecProducers/python/HBHEUpgradeReconstructor_cfi.py index 9b45391d7ac35..d510b4048f9eb 100644 --- a/RecoLocalCalo/HcalRecProducers/python/HBHEUpgradeReconstructor_cfi.py +++ b/RecoLocalCalo/HcalRecProducers/python/HBHEUpgradeReconstructor_cfi.py @@ -1,14 +1,14 @@ -import FWCore.ParameterSet.Config as cms - -hbheUpgradeReco = cms.EDProducer("HcalSimpleReconstructor", - correctionPhaseNS = cms.double(-5.0), - digiLabel = cms.InputTag("simHcalUnsuppressedDigis","HBHEUpgradeDigiCollection"), - Subdetector = cms.string('upgradeHBHE'), - correctForPhaseContainment = cms.bool(True), - correctForTimeslew = cms.bool(True), - dropZSmarkedPassed = cms.bool(True), - firstSample = cms.int32(4), - samplesToAdd = cms.int32(2), - tsFromDB = cms.bool(True) -) - +import FWCore.ParameterSet.Config as cms + +hbheUpgradeReco = cms.EDProducer("HcalSimpleReconstructor", + correctionPhaseNS = cms.double(5.0), + digiLabel = cms.InputTag("simHcalUnsuppressedDigis","HBHEUpgradeDigiCollection"), + Subdetector = cms.string('upgradeHBHE'), + correctForPhaseContainment = cms.bool(True), + correctForTimeslew = cms.bool(False), + dropZSmarkedPassed = cms.bool(True), + firstSample = cms.int32(4), + samplesToAdd = cms.int32(2), + tsFromDB = cms.bool(True) +) + diff --git a/SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h b/SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h index 0291658ccc78d..354d4433dbd52 100644 --- a/SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h +++ b/SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h @@ -15,8 +15,15 @@ class HcalSiPMShape : public CaloVShape { virtual double operator() (double time) const; - virtual double timeToRise() const {return 33.;} + virtual double timeToRise() const {return 3.5;} + + static double gexp(double t, double A, double c, double t0, double s); + static double gexpIndefIntegral(double t, double A, double c, double t0, + double s); + static double gexpIntegral0Inf(double A, double c, double t0, double s); + protected: + virtual double analyticPulseShape(double t) const; void computeShape(); private: diff --git a/SimCalorimetry/HcalSimAlgos/interface/HcalSimParameters.h b/SimCalorimetry/HcalSimAlgos/interface/HcalSimParameters.h index 3a573bb17ace6..4a020f10dad18 100644 --- a/SimCalorimetry/HcalSimAlgos/interface/HcalSimParameters.h +++ b/SimCalorimetry/HcalSimAlgos/interface/HcalSimParameters.h @@ -35,6 +35,7 @@ class HcalSimParameters : public CaloSimParameters double timeSmearRMS(double ampl) const; int pixels() const {return thePixels;} + bool doSiPMSmearing() const { return theSiPMSmearing; } friend class HcalSimParameterMap; @@ -45,6 +46,7 @@ class HcalSimParameters : public CaloSimParameters std::vector theSamplingFactors; std::vector thePE2fCByRing; int thePixels; + bool theSiPMSmearing; bool doTimeSmear_; HcalTimeSmearSettings theSmearSettings; }; diff --git a/SimCalorimetry/HcalSimAlgos/interface/HcalTDC.h b/SimCalorimetry/HcalSimAlgos/interface/HcalTDC.h index aad013c08e882..62be45761d119 100644 --- a/SimCalorimetry/HcalSimAlgos/interface/HcalTDC.h +++ b/SimCalorimetry/HcalSimAlgos/interface/HcalTDC.h @@ -1,3 +1,4 @@ +// -*- mode: c++ -*- #ifndef HcalSimAlgos_HcalTDC_h #define HcalSimAlgos_HcalTDC_h @@ -26,11 +27,15 @@ class HcalTDC { private: double getThreshold(const HcalGenericDetId & detId) const; + double getHysteresisThreshold(double nominal) const; + HcalTDCParameters theTDCParameters; const HcalDbService * theDbService; unsigned int theDAC; + double const lsb; + mutable CLHEP::RandGaussQ * theRandGaussQ; }; diff --git a/SimCalorimetry/HcalSimAlgos/src/HcalElectronicsSim.cc b/SimCalorimetry/HcalSimAlgos/src/HcalElectronicsSim.cc index 622570639632c..4409be86cb1f7 100644 --- a/SimCalorimetry/HcalSimAlgos/src/HcalElectronicsSim.cc +++ b/SimCalorimetry/HcalSimAlgos/src/HcalElectronicsSim.cc @@ -67,6 +67,7 @@ void HcalElectronicsSim::analogToDigital(CaloSamples & lf, ZDCDataFrame & result void HcalElectronicsSim::analogToDigital(CaloSamples & lf, HcalUpgradeDataFrame & result) { convert(lf, result); +// std::cout << HcalDetId(lf.id()) << ' ' << lf; theTDC.timing(lf, result); } diff --git a/SimCalorimetry/HcalSimAlgos/src/HcalSiPMHitResponse.cc b/SimCalorimetry/HcalSimAlgos/src/HcalSiPMHitResponse.cc index e861f3f8f164d..cf07cf03732e8 100644 --- a/SimCalorimetry/HcalSimAlgos/src/HcalSiPMHitResponse.cc +++ b/SimCalorimetry/HcalSimAlgos/src/HcalSiPMHitResponse.cc @@ -10,8 +10,10 @@ #include "SimCalorimetry/CaloSimAlgos/interface/CaloVHitCorrection.h" #include "SimCalorimetry/CaloSimAlgos/interface/CaloVShape.h" #include "FWCore/Utilities/interface/isFinite.h" +#include "SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h" #include +#include HcalSiPMHitResponse::HcalSiPMHitResponse(const CaloVSimParameterMap * parameterMap, const CaloShapes * shapes) : @@ -50,6 +52,7 @@ void HcalSiPMHitResponse::finalizeHits() { } LogDebug("HcalSiPMHitResponse") << HcalDetId(signal.id()) << ' ' << signal; + // std::cout << HcalDetId(signal.id()) << ' ' << signal; if (keep) add(signal); } } @@ -102,7 +105,9 @@ void HcalSiPMHitResponse::add(const PCaloHit& hit) { (hit.time() - timeOfFlight(id)) - BUNCHSPACE*( pars.binOfMaximum() - thePhaseShift_)); LogDebug("HcalSiPMHitResponse") << " tzero: " << tzero; - tzero += BUNCHSPACE*pars.binOfMaximum() + 72.31; + // tzero += BUNCHSPACE*pars.binOfMaximum() + 75.; + //move it back 25ns to bin 4 + tzero += BUNCHSPACE*pars.binOfMaximum() + 50.; LogDebug("HcalSiPMHitResponse") << " corrected tzero: " << tzero << '\n'; double t_pe(0.); int t_bin(0); @@ -221,6 +226,12 @@ CaloSamples HcalSiPMHitResponse::makeSiPMSignal(DetId const& id, double hitPixels(0.), elapsedTime(0.); unsigned int sumPE(0); double sumHits(0.); + + HcalSiPMShape sipmPulseShape; + + std::list< std::pair > pulses; + std::list< std::pair >::iterator pulse; + double timeDiff, pulseBit; // std::cout << HcalDetId(id) << '\n'; for (unsigned int pt(0); pt < photons.size(); ++pt) { pe = photons[pt]; @@ -229,7 +240,6 @@ CaloSamples HcalSiPMHitResponse::makeSiPMSignal(DetId const& id, sampleBin = preciseBin/theTDCParams.nbins(); if (pe > 0) { hitPixels = theSiPM->hitCells(pe, 0., elapsedTime); - signal[sampleBin] += hitPixels; sumHits += hitPixels; // std::cout << " elapsedTime: " << elapsedTime // << " sampleBin: " << sampleBin @@ -237,14 +247,37 @@ CaloSamples HcalSiPMHitResponse::makeSiPMSignal(DetId const& id, // << " pe: " << pe // << " hitPixels: " << hitPixels // << '\n'; - hitPixels *= invdt; - signal.preciseAtMod(preciseBin) += 0.6*hitPixels; - if (preciseBin > 0) - signal.preciseAtMod(preciseBin-1) += 0.2*hitPixels; - if (preciseBin < signal.preciseSize() -1) - signal.preciseAtMod(preciseBin+1) += 0.2*hitPixels; + if (pars.doSiPMSmearing()) { + pulses.push_back( std::pair(elapsedTime, hitPixels) ); + } else { + signal[sampleBin] += hitPixels; + hitPixels *= invdt; + signal.preciseAtMod(preciseBin) += 0.6*hitPixels; + if (preciseBin > 0) + signal.preciseAtMod(preciseBin-1) += 0.2*hitPixels; + if (preciseBin < signal.preciseSize() -1) + signal.preciseAtMod(preciseBin+1) += 0.2*hitPixels; + } + } + + if (pars.doSiPMSmearing()) { + pulse = pulses.begin(); + while (pulse != pulses.end()) { + timeDiff = elapsedTime - pulse->first; + pulseBit = sipmPulseShape(timeDiff)*pulse->second; + // std::cout << "pulse t: " << pulse->first + // << " pulse A: " << pulse->second + // << " timeDiff: " << timeDiff + // << " pulseBit: " << pulseBit + // << '\n'; + signal[sampleBin] += pulseBit; + signal.preciseAtMod(preciseBin) += pulseBit*invdt; + if (sipmPulseShape(timeDiff) < 1e-6) + pulse = pulses.erase(pulse); + else + ++pulse; + } } - // signal.preciseAtMod(preciseBin) += sumHits; elapsedTime += dt; } diff --git a/SimCalorimetry/HcalSimAlgos/src/HcalSiPMShape.cc b/SimCalorimetry/HcalSimAlgos/src/HcalSiPMShape.cc index 5730a8fdf6875..a7dfdae4ddf5d 100644 --- a/SimCalorimetry/HcalSimAlgos/src/HcalSiPMShape.cc +++ b/SimCalorimetry/HcalSimAlgos/src/HcalSiPMShape.cc @@ -1,8 +1,11 @@ + #include "SimCalorimetry/HcalSimAlgos/interface/HcalSiPMShape.h" #include +#include -HcalSiPMShape::HcalSiPMShape() : CaloVShape(), nBins_(512), nt_(nBins_, 0.) { +HcalSiPMShape::HcalSiPMShape() : CaloVShape(), nBins_(35*2+1), + nt_(nBins_, 0.) { computeShape(); } @@ -11,7 +14,7 @@ HcalSiPMShape::HcalSiPMShape(const HcalSiPMShape & other) : } double HcalSiPMShape::operator () (double time) const { - int jtime = static_cast(time + 0.5); + int jtime = static_cast(time*2 + 0.5); if (jtime>=0 && jtime 31) && (j <= 96)) - nt_[j] = 102.1 - 1.12*j; - else - nt_[j] = 0.0076*j - 6.4; + nt_[j] = analyticPulseShape(j/2.); norm += (nt_[j]>0) ? nt_[j] : 0.; } + // std::cout << "SiPM pulse shape: "; for (int j = 0; j < nBins_; ++j) { nt_[j] /= norm; + // std::cout << nt_[j] << ' '; } + // std::cout << std::endl; +} + +double HcalSiPMShape::gexp(double t, double A, double c, double t0, double s) { + static double const root2(sqrt(2)); + return -A*0.5*exp(c*t+0.5*c*c*s*s-c*s)*(erf(-0.5*root2/s*(t-t0+c*s*s))-1); +} + +double HcalSiPMShape::gexpIndefIntegral(double t, double A, double c, + double t0, double s) { + static double const root2(sqrt(2)); + + return (exp(-c*t0)*(exp(c*t0)*erf((root2*t0-root2*t)/(2*s))-exp(c*t+(c*c*s*2)/2)*erf((t0-t-c*s*s)/(root2*s))+exp(c*t+(c*c*s*s)/2))*A)/(2*c); +} + +double HcalSiPMShape::gexpIntegral0Inf(double A, double c, double t0, + double s) { + static double const root2(sqrt(2)); + return (exp(-c*t0)*(exp((c*c*s*s)/2)*erf((root2*t0-root2*c*s*s)/(2*s))-exp(c*t0)*erf(t0/(root2*s))-exp(c*t0)-exp((c*c*s*s)/2))*A)/(2*c); +} + +double HcalSiPMShape::analyticPulseShape(double t) const { + double A1(0.08757), c1(-0.5257), t01(2.4013), s1(0.6721); + double A2(0.007598), c2(-0.1501), t02(6.9412), s2(0.8710); + return gexp(t,A1,c1,t01,s1) + gexp(t,A2,c2,t02,s2); } diff --git a/SimCalorimetry/HcalSimAlgos/src/HcalSimParameters.cc b/SimCalorimetry/HcalSimAlgos/src/HcalSimParameters.cc index 4e90a5288562a..50a9b88a70fe8 100644 --- a/SimCalorimetry/HcalSimAlgos/src/HcalSimParameters.cc +++ b/SimCalorimetry/HcalSimAlgos/src/HcalSimParameters.cc @@ -20,6 +20,7 @@ HcalSimParameters::HcalSimParameters(double simHitToPhotoelectrons, const std::v theSamplingFactors(samplingFactors), thePE2fCByRing(photoelectronsToAnalog), thePixels(0), + theSiPMSmearing(false), doTimeSmear_(true) { defaultTimeSmearing(); @@ -31,13 +32,15 @@ HcalSimParameters::HcalSimParameters(const edm::ParameterSet & p) theFirstRing( p.getParameter("firstRing") ), theSamplingFactors( p.getParameter >("samplingFactors") ), thePE2fCByRing( p.getParameter >("photoelectronsToAnalog") ), - thePixels(0), + thePixels(0), theSiPMSmearing(false), doTimeSmear_( p.getParameter("timeSmearing")) { if(p.exists("pixels")) { thePixels = p.getParameter("pixels"); } + if (p.exists("doSiPMSmearing")) + theSiPMSmearing = p.getParameter("doSiPMSmearing"); defaultTimeSmearing(); } diff --git a/SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc b/SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc index 03fc73c368245..f1d2e76c31194 100644 --- a/SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc +++ b/SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc @@ -6,6 +6,7 @@ HcalTDC::HcalTDC(unsigned int thresholdDAC) : theTDCParameters(), theDbService(0), theDAC(thresholdDAC), + lsb(3.74), theRandGaussQ(0) {} HcalTDC::~HcalTDC() { @@ -14,17 +15,22 @@ HcalTDC::~HcalTDC() { void HcalTDC::timing(const CaloSamples& lf, HcalUpgradeDataFrame& digi) const { - float TDC_Threshold = getThreshold(digi.id()); - bool alreadyOn = false; + float const TDC_Threshold(getThreshold(digi.id())); + float const TDC_Threshold_hyst(TDC_Threshold); + bool risingReady(true), fallingReady(false); int tdcBins = theTDCParameters.nbins(); // start with a loop over 10 samples bool hasTDCValues=true; if (lf.preciseSize()==0 ) hasTDCValues=false; + // "AC" hysteresis from Tom: There cannot be a second transition + // within the QIE within 3ns + int const rising_ac_hysteresis(5); + int lastRisingEdge(0); + // if (hasTDCValues) // std::cout << digi.id() // << " threshold: " << TDC_Threshold - // << " hasTDCValues: " << hasTDCValues // << '\n'; for (int ibin = 0; ibin < lf.size(); ++ibin) { /* @@ -41,10 +47,12 @@ void HcalTDC::timing(const CaloSamples& lf, HcalUpgradeDataFrame& digi) const { TDC_FallingEdge=62. */ // special codes - int TDC_RisingEdge = (alreadyOn) ? theTDCParameters.alreadyTransitionCode() - : theTDCParameters.noTransitionCode(); - int TDC_FallingEdge = (alreadyOn) ? theTDCParameters.noTransitionCode() : + int TDC_RisingEdge = (risingReady) ? + theTDCParameters.noTransitionCode() : theTDCParameters.alreadyTransitionCode(); + int TDC_FallingEdge = (fallingReady) ? + theTDCParameters.alreadyTransitionCode() : + theTDCParameters.noTransitionCode(); int preciseBegin = ibin * tdcBins; int preciseEnd = preciseBegin + tdcBins; if ( hasTDCValues) { @@ -52,22 +60,34 @@ void HcalTDC::timing(const CaloSamples& lf, HcalUpgradeDataFrame& digi) const { for(int i = preciseBegin; i < preciseEnd; ++i) { // std::cout << " preciseBin: " << i // << " preciseAt(i): " << lf.preciseAt(i); - if (alreadyOn) { - if( (i%3 == 0) && (lf.preciseAt(i) < TDC_Threshold) ) { - alreadyOn = false; - TDC_FallingEdge = i-preciseBegin; - // std::cout << " falling "; - } - } else { - if (lf.preciseAt(i) > TDC_Threshold) { - alreadyOn = true; - TDC_RisingEdge = i-preciseBegin; - // the flag for hasn't gone low yet - TDC_FallingEdge = theTDCParameters.noTransitionCode(); - // std::cout << " rising "; - } + if( (fallingReady) && (i%3 == 0) && (lf.preciseAt(i) < TDC_Threshold)) { + fallingReady = false; + TDC_FallingEdge = i-preciseBegin; + // std::cout << " falling "; + } + if ((risingReady) && (lf.preciseAt(i) > TDC_Threshold)) { + risingReady = false; + TDC_RisingEdge = i-preciseBegin; + lastRisingEdge = 0; + // std::cout << " rising "; } // std::cout << '\n'; + + //This is the place for hysteresis code. Need to to arm the + //tdc by setting the risingReady or fallingReady to true. + + if ((!fallingReady) && (lf.preciseAt(i) > TDC_Threshold)) { + fallingReady = true; + if (TDC_FallingEdge == theTDCParameters.alreadyTransitionCode()) + TDC_FallingEdge = theTDCParameters.noTransitionCode(); + } + if ((!risingReady) && (lastRisingEdge > rising_ac_hysteresis) && + (lf.preciseAt(i) < TDC_Threshold_hyst)) { + risingReady = true; + if (TDC_RisingEdge == theTDCParameters.alreadyTransitionCode()) + TDC_RisingEdge = theTDCParameters.noTransitionCode(); + } + ++lastRisingEdge; } } // change packing to allow for special codes @@ -95,12 +115,20 @@ double HcalTDC::getThreshold(const HcalGenericDetId & detId) const { // in the TDC circuit or 3.74 uA at the input current. // the pedestal is assumed to be evenly distributed in time with some - // random variation. No hysteresis is implemented here. + // random variation. - double const lsb(3.74); return lsb*theDAC - theRandGaussQ->shoot(pedestal, pedestalWidth)/theTDCParameters.deltaT()/theTDCParameters.nbins(); } +double HcalTDC::getHysteresisThreshold(double nominal) const { + // the TDC will "re-arm" when it crosses the threshold minus 2.5 mV. + // the lsb is 44kOhm * (3.74 uA / 24) = 6.86 mV. 2.5 mV is 0.36 lsb. + // with the this means that the hysteresis it isn't far from the nominal + // threshold + + return nominal - 0.365*lsb; +} + void HcalTDC::setRandomEngine(CLHEP::HepRandomEngine & engine) { theRandGaussQ = new CLHEP::RandGaussQ(engine); } @@ -108,4 +136,3 @@ void HcalTDC::setRandomEngine(CLHEP::HepRandomEngine & engine) { void HcalTDC::setDbService(const HcalDbService * service) { theDbService = service; } - diff --git a/SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py b/SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py index 42094aec31c62..cf0ed55c7f042 100644 --- a/SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py +++ b/SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py @@ -44,7 +44,8 @@ timePhase = cms.double(5.0), timeSmearing = cms.bool(False), # 0 is HPD, 1 is SiPM, 2 fetches HPD/Zecotek/Hamamatsufrom DB - siPMCode = cms.int32(2) + siPMCode = cms.int32(2), + doSiPMSmearing = cms.bool(False) ), hb = cms.PSet( readoutFrameSize = cms.int32(10), @@ -61,7 +62,8 @@ syncPhase = cms.bool(True), timePhase = cms.double(6.0), timeSmearing = cms.bool(True), - siPMCells = cms.vint32() + siPMCells = cms.vint32(), + doSiPMSmearing = cms.bool(True) ), he = cms.PSet( readoutFrameSize = cms.int32(10), @@ -76,7 +78,8 @@ 190.90, 193.06, 188.42, 188.42), syncPhase = cms.bool(True), timePhase = cms.double(6.0), - timeSmearing = cms.bool(True) + timeSmearing = cms.bool(True), + doSiPMSmearing = cms.bool(True) ), zdc = cms.PSet( readoutFrameSize = cms.int32(10), From ab7a6dcbfda24e9229da7ec63f96072a39ab7939 Mon Sep 17 00:00:00 2001 From: Jake Date: Wed, 23 Oct 2013 09:16:47 -0500 Subject: [PATCH 18/45] removed unused gexp function --- CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc b/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc index e4810a46ab3ca..94075f1499738 100644 --- a/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc +++ b/CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc @@ -434,10 +434,10 @@ void HcalPulseShapes::computeSiPMShape() } } -double HcalPulseShapes::gexp(double t, double A, double c, double t0, double s) { - static double const root2(sqrt(2)); - return -A*0.5*exp(c*t+0.5*c*c*s*s-c*s)*(erf(-0.5*root2/s*(t-t0+c*s*s))-1); -} +// double HcalPulseShapes::gexp(double t, double A, double c, double t0, double s) { +// static double const root2(sqrt(2)); +// return -A*0.5*exp(c*t+0.5*c*c*s*s-c*s)*(erf(-0.5*root2/s*(t-t0+c*s*s))-1); +// } const HcalPulseShapes::Shape & From 6d139ea18b02a51fc36feb9c0851071249a5d71c Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Thu, 24 Oct 2013 16:15:07 +0200 Subject: [PATCH 19/45] Fix configuration --- Validation/Geometry/python/single_neutrino_cfg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Validation/Geometry/python/single_neutrino_cfg.py b/Validation/Geometry/python/single_neutrino_cfg.py index 47f9df12a1ec1..6242aa95c7f66 100644 --- a/Validation/Geometry/python/single_neutrino_cfg.py +++ b/Validation/Geometry/python/single_neutrino_cfg.py @@ -10,8 +10,8 @@ ) process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", - moduleSeeds = cms.PSet( - generator = cms.untracked.uint32(456789) + generator = cms.PSet( + initialSeed = cms.untracked.uint32(456789) ) ) From 2b4a9f01e9144faa2648c1349272f62164356663 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Thu, 24 Oct 2013 16:51:16 +0200 Subject: [PATCH 20/45] Fix configuration to run material budget analysis for Tracker --- Validation/Geometry/test/runP_Tracker_cfg.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Validation/Geometry/test/runP_Tracker_cfg.py b/Validation/Geometry/test/runP_Tracker_cfg.py index 558e17c1b755b..ef6dbd3edd146 100644 --- a/Validation/Geometry/test/runP_Tracker_cfg.py +++ b/Validation/Geometry/test/runP_Tracker_cfg.py @@ -6,9 +6,7 @@ #Geometry # -process.load("Geometry.CMSCommonData.cmsSimIdealGeometryXML_cfi") - -process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi") +process.load("Configuration.Geometry.GeometryExtended_cff") #Magnetic Field # @@ -23,8 +21,8 @@ process.load("SimG4Core.Application.g4SimHits_cfi") process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", - moduleSeeds = cms.PSet( - g4SimHits = cms.untracked.uint32(9876) + g4SimHits = cms.PSet( + initialSeed = cms.untracked.uint32(9876) ) ) @@ -50,11 +48,11 @@ ) process.p1 = cms.Path(process.g4SimHits) -process.g4SimHits.UseMagneticField = cms.bool(False) -process.g4SimHits.Physics.type = 'SimG4Core/Physics/DummyPhysics' -process.g4SimHits.Physics.DummyEMPhysics = cms.bool(True) -process.g4SimHits.Physics.CutsPerRegion = cms.bool(False) process.g4SimHits.StackingAction.TrackNeutrino = cms.bool(True) +process.g4SimHits.UseMagneticField = False +process.g4SimHits.Physics.type = 'SimG4Core/Physics/DummyPhysics' +process.g4SimHits.Physics.DummyEMPhysics = True +process.g4SimHits.Physics.CutsPerRegion = False process.g4SimHits.Watchers = cms.VPSet(cms.PSet( type = cms.string('MaterialBudgetAction'), MaterialBudgetAction = cms.PSet( @@ -69,5 +67,3 @@ TextFile = cms.string('None') ) )) - - From 28fe22b11a6401f7497c57d28361ac4f37428020 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Thu, 24 Oct 2013 16:52:16 +0200 Subject: [PATCH 21/45] Add configuration to run material budget analysis on Phase 2 BE --- .../test/runP_TrackerPhase2TkBE_cfg.py | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Validation/Geometry/test/runP_TrackerPhase2TkBE_cfg.py diff --git a/Validation/Geometry/test/runP_TrackerPhase2TkBE_cfg.py b/Validation/Geometry/test/runP_TrackerPhase2TkBE_cfg.py new file mode 100644 index 0000000000000..e57669cacddd6 --- /dev/null +++ b/Validation/Geometry/test/runP_TrackerPhase2TkBE_cfg.py @@ -0,0 +1,69 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("PROD") + +process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi") + +#Geometry +# +process.load("Configuration.Geometry.GeometryExtendedPhase2TkBE_cff") + +#Magnetic Field +# +process.load("Configuration.StandardSequences.MagneticField_38T_cff") + +# Output of events, etc... +# +# Explicit note : since some histos/tree might be dumped directly, +# better NOT use PoolOutputModule ! +# Detector simulation (Geant4-based) +# +process.load("SimG4Core.Application.g4SimHits_cfi") + +process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", + g4SimHits = cms.PSet( + initialSeed = cms.untracked.uint32(9876) + ) +) + +process.MessageLogger = cms.Service("MessageLogger", + cout = cms.untracked.PSet( + default = cms.untracked.PSet( + limit = cms.untracked.int32(0) + ), + FwkJob = cms.untracked.PSet( ## but FwkJob category - those unlimitted + limit = cms.untracked.int32(-1) + ) + ), + categories = cms.untracked.vstring('FwkJob'), + destinations = cms.untracked.vstring('cout') +) + +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring('file:single_neutrino_random.root') +) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(-1) +) + +process.p1 = cms.Path(process.g4SimHits) +process.g4SimHits.StackingAction.TrackNeutrino = cms.bool(True) +process.g4SimHits.UseMagneticField = False +process.g4SimHits.Physics.type = 'SimG4Core/Physics/DummyPhysics' +process.g4SimHits.Physics.DummyEMPhysics = True +process.g4SimHits.Physics.CutsPerRegion = False +process.g4SimHits.Watchers = cms.VPSet(cms.PSet( + type = cms.string('MaterialBudgetAction'), + MaterialBudgetAction = cms.PSet( + HistosFile = cms.string('matbdg_TrackerPhase2TkBE.root'), + AllStepsToTree = cms.bool(True), + HistogramList = cms.string('Tracker'), + SelectedVolumes = cms.vstring('Tracker'), + TreeFile = cms.string('None'), ## is NOT requested + + StopAfterProcess = cms.string('None'), + # string TextFile = "matbdg_Tracker.txt" + TextFile = cms.string('None') + ) +)) From cb250882dcab64798a3e9a8ef2ef114f01b37156 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Fri, 25 Oct 2013 11:07:28 +0200 Subject: [PATCH 22/45] Fix configuration --- SimTracker/TrackerMaterialAnalysis/test/listGroups.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SimTracker/TrackerMaterialAnalysis/test/listGroups.py b/SimTracker/TrackerMaterialAnalysis/test/listGroups.py index 9164b27a9cab3..2a3cb60e6cbfa 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/listGroups.py +++ b/SimTracker/TrackerMaterialAnalysis/test/listGroups.py @@ -3,7 +3,7 @@ import FWCore.ParameterSet.Config as cms process = cms.Process("MaterialAnalyser") -process.load("Configuration.StandardSequences.Geometry_cff") +process.load("Configuration.StandardSequences.GeometryExtended_cff") process.load("Configuration.StandardSequences.MagneticField_cff") process.load("SimTracker.TrackerMaterialAnalysis.trackingMaterialGroups_cff") @@ -13,8 +13,8 @@ process.source = cms.Source("EmptySource") process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(0) + input = cms.untracked.int32(1) ) -process.listGroups = cms.EDFilter("ListGroups") +process.listGroups = cms.EDAnalyzer("ListGroups") process.path = cms.Path(process.listGroups) From 5bf99b05aeac5962ec53288d2a3e10d2d9efb9e7 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Fri, 25 Oct 2013 11:10:18 +0200 Subject: [PATCH 23/45] Fix configuration --- SimTracker/TrackerMaterialAnalysis/test/listIds.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SimTracker/TrackerMaterialAnalysis/test/listIds.py b/SimTracker/TrackerMaterialAnalysis/test/listIds.py index f327585a8c3c7..a5bb045c62040 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/listIds.py +++ b/SimTracker/TrackerMaterialAnalysis/test/listIds.py @@ -3,7 +3,7 @@ import FWCore.ParameterSet.Config as cms process = cms.Process("MaterialAnalyser") -process.load("Configuration.StandardSequences.Geometry_cff") +process.load("Configuration.StandardSequences.GeometryExtended_cff") process.load("Configuration.StandardSequences.MagneticField_cff") process.MessageLogger = cms.Service("MessageLogger", @@ -15,5 +15,5 @@ input = cms.untracked.int32(1) ) -process.listIds = cms.EDFilter("ListIds") +process.listIds = cms.EDAnalyzer("ListIds") process.path = cms.Path(process.listIds) From 0f1cfb4aa991f0f59b67d922f15d3827b9fa2df1 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Fri, 25 Oct 2013 11:33:21 +0200 Subject: [PATCH 24/45] Fix configurations --- .../test/trackingMaterialAnalyser.py | 7 ++++--- .../test/trackingMaterialProducer.py | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialAnalyser.py b/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialAnalyser.py index e645a58747dc1..aee9f445c07f0 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialAnalyser.py +++ b/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialAnalyser.py @@ -9,10 +9,11 @@ ) # Configuration and Conditions -process.load("Configuration.StandardSequences.Geometry_cff") -process.load("Configuration.StandardSequences.MagneticField_40T_cff") +process.load("Configuration.StandardSequences.GeometryExtended_cff") +process.load("Configuration.StandardSequences.MagneticField_cff") process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") -process.GlobalTag.globaltag = 'IDEAL_V9::All' +from Configuration.AlCa.autoCond import autoCond +process.GlobalTag.globaltag = autoCond['mc'] # Analyze and plot the tracking material process.load("SimTracker.TrackerMaterialAnalysis.trackingMaterialAnalyser_cff") diff --git a/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialProducer.py b/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialProducer.py index 4f378fdd2c223..2962ce93ba9ae 100755 --- a/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialProducer.py +++ b/SimTracker/TrackerMaterialAnalysis/test/trackingMaterialProducer.py @@ -5,13 +5,24 @@ process = cms.Process("Geometry") # gaussian Vertex Smearing -process.load("Configuration.StandardSequences.VtxSmearedGauss_cff") +process.load("IOMC.EventVertexGenerators.VtxSmearedGauss_cfi") # detector simulation (Geant4-based) with tracking material accounting -process.load("Configuration.StandardSequences.Geometry_cff") -process.load("Configuration.StandardSequences.MagneticField_40T_cff") +process.load("Configuration.StandardSequences.GeometryExtended_cff") +process.load("Configuration.StandardSequences.MagneticField_cff") +process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi") process.load("SimTracker.TrackerMaterialAnalysis.trackingMaterialProducer_cff") +process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", + trackingMaterialProducer = cms.PSet(initialSeed = cms.untracked.uint32(123456789), + engineName = cms.untracked.string('TRandom3') + ), + VtxSmeared = cms.PSet(initialSeed = cms.untracked.uint32(123456789), + engineName = cms.untracked.string('TRandom3') + ) + ) +process.VtxSmeared.src = cms.InputTag("source") + # message logger process.MessageLogger = cms.Service("MessageLogger", cout = cms.untracked.PSet( From d8d8734f3a3c0da0a8eb39c1a5354208c147c679 Mon Sep 17 00:00:00 2001 From: Gaelle Date: Wed, 30 Oct 2013 00:13:59 +0100 Subject: [PATCH 25/45] adding BS customs --- .../Configuration/python/combinedCustoms.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py index 464811ba12b6d..b23d4d8b0ab68 100644 --- a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py @@ -324,3 +324,45 @@ def fastsimDefault(process): def fastsimPhase2(process): return fastCustomisePhase2(process) +def bsStudyStep1(process): + process.VtxSmeared.MaxZ = 11.0 + process.VtxSmeared.MinZ = -11.0 + return process + +def bsStudyStep2(process): + process.initialStepSeeds.RegionFactoryPSet.RegionPSet = cms.PSet( + precise = cms.bool(True), + originRadius = cms.double(0.02), + originHalfLength = cms.double(11.0),#nSigmaZ = cms.double(4.0), + beamSpot = cms.InputTag("o..ineBeamSpot"), + ptMin = cms.double(0.7) + ) + process.highPtTripletStepSeeds.RegionFactoryPSet.RegionPSet = cms.PSet( + precise = cms.bool(True), + originRadius = cms.double(0.02), + originHalfLength = cms.double(11.0),#nSigmaZ = cms.double(4.0), + beamSpot = cms.InputTag("o..ineBeamSpot"), + ptMin = cms.double(0.7) + ) + process.lowPtQuadStepSeeds.RegionFactoryPSet.RegionPSet = cms.PSet( + precise = cms.bool(True), + originRadius = cms.double(0.02), + originHalfLength = cms.double(11.0),#nSigmaZ = cms.double(4.0), + beamSpot = cms.InputTag("o..ineBeamSpot"), + ptMin = cms.double(0.2) + ) + process.lowPtTripletStepSeeds.RegionFactoryPSet.RegionPSet = cms.PSet( + precise = cms.bool(True), + originRadius = cms.double(0.015), + originHalfLength = cms.double(11.0),#nSigmaZ = cms.double(4.0), + beamSpot = cms.InputTag("o..ineBeamSpot"), + ptMin = cms.double(0.35) + ) + process.detachedQuadStepSeeds.RegionFactoryPSet.RegionPSet = cms.PSet( + precise = cms.bool(True), + originRadius = cms.double(0.5), + originHalfLength = cms.double(11.0),#nSigmaZ = cms.double(4.0), + beamSpot = cms.InputTag("o..ineBeamSpot"), + ptMin = cms.double(0.3) + ) + return process From e087941b066c1fada348bc69b3588379f893370e Mon Sep 17 00:00:00 2001 From: Gaelle Date: Wed, 30 Oct 2013 09:08:41 +0100 Subject: [PATCH 26/45] synchronize PU scenarios --- Configuration/StandardSequences/python/Mixing.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Configuration/StandardSequences/python/Mixing.py b/Configuration/StandardSequences/python/Mixing.py index 05ea305003e83..eca825410e78a 100644 --- a/Configuration/StandardSequences/python/Mixing.py +++ b/Configuration/StandardSequences/python/Mixing.py @@ -116,6 +116,8 @@ def addMixingScenario(label,dict): addMixingScenario("AVE_25_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 25}) addMixingScenario("AVE_35_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 35}) addMixingScenario("AVE_35_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 35}) +addMixingScenario("AVE_40_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 40}) +addMixingScenario("AVE_40_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 40}) addMixingScenario("AVE_45_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 45}) addMixingScenario("AVE_50_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 50}) addMixingScenario("AVE_50_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 50}) @@ -123,6 +125,7 @@ def addMixingScenario(label,dict): addMixingScenario("AVE_70_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 70}) addMixingScenario("AVE_75_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 75}) addMixingScenario("AVE_75_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 75}) +addMixingScenario("AVE_80_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 80}) addMixingScenario("AVE_100_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 100}) addMixingScenario("AVE_100_BX_25ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':25, 'B': (-12,3), 'N': 100}) addMixingScenario("AVE_125_BX_50ns",{'file': 'SimGeneral.MixingModule.mix_E8TeV_AVE_16_BX_25ns_cfi','BX':50, 'B': (-12,3), 'N': 125}) From 82bcac97a12dcde8ce11994d61eb88ef83a53ea7 Mon Sep 17 00:00:00 2001 From: Gaelle Date: Wed, 30 Oct 2013 12:09:30 +0100 Subject: [PATCH 27/45] removing obsolete/unsupported scenarios (cleaning) --- .../python/relval_steps.py | 231 ------------------ .../python/relval_upgrade.py | 144 ----------- 2 files changed, 375 deletions(-) diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 83c4ca112f135..a3d9857fbde66 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -401,175 +401,6 @@ def genS(fragment,howMuch): ## upgrade dedicated wf -## extendedPhase1 -step1UpepiDefaults = {'-s' : 'GEN,SIM', - '-n' : 10, - '--conditions' : 'DESIGN61_V10::All', #should be updated with autocond - '--beamspot' : 'Gauss', - '--datatier' : 'GEN-SIM', - '--eventcontent': 'FEVTDEBUG', - '--geometry' : 'ExtendedPhaseIPixel', - '--customise' : 'SLHCUpgradeSimulations/Configuration/phase1TkCustoms.customise' - } -def genepi(fragment,howMuch): - global step1UpepiDefaults - return merge([{'cfg':fragment},howMuch,step1UpepiDefaults]) - -steps['FourMuPt1_200_UPGPhase1']=genepi('FourMuPt_1_200_cfi',Kby(10,100)) -steps['SingleElectronPt10_UPGPhase1']=genepi('SingleElectronPt10_cfi',Kby(9,300)) -steps['SingleElectronPt35_UPGPhase1']=genepi('SingleElectronPt35_cfi',Kby(9,500)) -steps['SingleElectronPt1000_UPGPhase1']=genepi('SingleElectronPt1000_cfi',Kby(9,50)) -steps['SingleGammaPt10_UPGPhase1']=genepi('SingleGammaPt10_cfi',Kby(9,3000)) -steps['SingleGammaPt35_UPGPhase1']=genepi('SingleGammaPt35_cfi',Kby(9,500)) -steps['SingleMuPt1_UPGPhase1']=genepi('SingleMuPt1_cfi',Kby(25,1000)) -steps['SingleMuPt10_UPGPhase1']=genepi('SingleMuPt10_cfi',Kby(25,500)) -steps['SingleMuPt100_UPGPhase1']=genepi('SingleMuPt100_cfi',Kby(9,500)) -steps['SingleMuPt1000_UPGPhase1']=genepi('SingleMuPt1000_cfi',Kby(9,500)) - -steps['TTbarLepton_UPGPhase1_8']=genepi('TTbarLepton_Tauola_8TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_80_120_UPGPhase1_8']=genepi('Wjet_Pt_80_120_8TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_3000_3500_UPGPhase1_8']=genepi('Wjet_Pt_3000_3500_8TeV_cfi',Kby(9,50)) -steps['LM1_sfts_UPGPhase1_8']=genepi('LM1_sfts_8TeV_cfi',Kby(9,100)) - -steps['QCD_Pt_3000_3500_UPGPhase1_8']=genepi('QCD_Pt_3000_3500_8TeV_cfi',Kby(9,25)) -steps['QCD_Pt_600_800_UPGPhase1_8']=genepi('QCD_Pt_600_800_8TeV_cfi',Kby(9,50)) -steps['QCD_Pt_80_120_UPGPhase1_8']=genepi('QCD_Pt_80_120_8TeV_cfi',Kby(9,100)) - -steps['Higgs200ChargedTaus_UPGPhase1_8']=genepi('H200ChargedTaus_Tauola_8TeV_cfi',Kby(9,100)) -steps['JpsiMM_UPGPhase1_8']=genepi('JpsiMM_8TeV_cfi',Kby(66,1000)) -steps['TTbar_UPGPhase1_8']=genepi('TTbar_Tauola_8TeV_cfi',Kby(9,100)) -steps['WE_UPGPhase1_8']=genepi('WE_8TeV_cfi',Kby(9,100)) -steps['ZEE_UPGPhase1_8']=genepi('ZEE_8TeV_cfi',Kby(9,100)) -steps['ZTT_UPGPhase1_8']=genepi('ZTT_Tauola_All_hadronic_8TeV_cfi',Kby(9,150)) -steps['H130GGgluonfusion_UPGPhase1_8']=genepi('H130GGgluonfusion_8TeV_cfi',Kby(9,100)) -steps['PhotonJets_Pt_10_UPGPhase1_8']=genepi('PhotonJet_Pt_10_8TeV_cfi',Kby(9,150)) -steps['QQH1352T_Tauola_UPGPhase1_8']=genepi('QQH1352T_Tauola_8TeV_cfi',Kby(9,100)) - -steps['MinBias_TuneZ2star_UPGPhase1_8']=genepi('MinBias_TuneZ2star_8TeV_pythia6_cff',Kby(9,300)) -steps['WM_UPGPhase1_8']=genepi('WM_8TeV_cfi',Kby(9,200)) -steps['ZMM_UPGPhase1_8']=genepi('ZMM_8TeV_cfi',Kby(18,300)) - -steps['ADDMonoJet_d3MD3_UPGPhase1_8']=genepi('ADDMonoJet_8TeV_d3MD3_cfi',Kby(9,100)) -steps['ZpMM_UPGPhase1_8']=genepi('ZpMM_8TeV_cfi',Kby(9,200)) -steps['WpM_UPGPhase1_8']=genepi('WpM_8TeV_cfi',Kby(9,200)) - - - - - -#14TeV -#steps['TTbarLepton_UPGPhase1_14']=genepi('TTbarLepton_Tauola_14TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_80_120_UPGPhase1_14']=genepi('Wjet_Pt_80_120_14TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_3000_3500_UPGPhase1_14']=genepi('Wjet_Pt_3000_3500_14TeV_cfi',Kby(9,50)) -steps['LM1_sfts_UPGPhase1_14']=genepi('LM1_sfts_14TeV_cfi',Kby(9,100)) - -steps['QCD_Pt_3000_3500_UPGPhase1_14']=genepi('QCD_Pt_3000_3500_14TeV_cfi',Kby(9,25)) -#steps['QCD_Pt_600_800_UPGPhase1_14']=genepi('QCD_Pt_600_800_14TeV_cfi',Kby(9,50)) -steps['QCD_Pt_80_120_UPGPhase1_14']=genepi('QCD_Pt_80_120_14TeV_cfi',Kby(9,100)) - -steps['Higgs200ChargedTaus_UPGPhase1_14']=genepi('H200ChargedTaus_Tauola_14TeV_cfi',Kby(9,100)) -steps['JpsiMM_UPGPhase1_14']=genepi('JpsiMM_14TeV_cfi',Kby(66,1000)) -steps['TTbar_UPGPhase1_14']=genepi('TTbar_Tauola_14TeV_cfi',Kby(9,100)) -steps['WE_UPGPhase1_14']=genepi('WE_14TeV_cfi',Kby(9,100)) -steps['ZEE_UPGPhase1_14']=genepi('ZEE_14TeV_cfi',Kby(9,100)) -steps['ZTT_UPGPhase1_14']=genepi('ZTT_Tauola_All_hadronic_14TeV_cfi',Kby(9,150)) -steps['H130GGgluonfusion_UPGPhase1_14']=genepi('H130GGgluonfusion_14TeV_cfi',Kby(9,100)) -steps['PhotonJets_Pt_10_UPGPhase1_14']=genepi('PhotonJet_Pt_10_14TeV_cfi',Kby(9,150)) -steps['QQH1352T_Tauola_UPGPhase1_14']=genepi('QQH1352T_Tauola_14TeV_cfi',Kby(9,100)) - -steps['MinBias_TuneZ2star_UPGPhase1_14']=genepi('MinBias_TuneZ2star_14TeV_pythia6_cff',Kby(9,300)) -steps['WM_UPGPhase1_14']=genepi('WM_14TeV_cfi',Kby(9,200)) -steps['ZMM_UPGPhase1_14']=genepi('ZMM_14TeV_cfi',Kby(18,300)) - -#steps['ADDMonoJet_d3MD3_UPGPhase1_14']=genepi('ADDMonoJet_14TeV_d3MD3_cfi',Kby(9,100)) -#steps['ZpMM_UPGPhase1_14']=genepi('ZpMM_14TeV_cfi',Kby(9,200)) -#steps['WpM_UPGPhase1_14']=genepi('WpM_14TeV_cfi',Kby(9,200)) - - -## 2015 - - -step1Up2015Defaults = {'-s' : 'GEN,SIM', - '-n' : 10, - '--conditions' : 'auto:upgradePLS1', - '--datatier' : 'GEN-SIM', - '--eventcontent': 'FEVTDEBUG', - '--geometry' : 'Extended2015', - '--customise' : 'SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1' - } -def gen2015(fragment,howMuch): - global step1Up2015Defaults - return merge([{'cfg':fragment},howMuch,step1Up2015Defaults]) - -steps['FourMuPt1_200_UPG2015']=gen2015('FourMuPt_1_200_cfi',Kby(10,100)) -steps['SingleElectronPt10_UPG2015']=gen2015('SingleElectronPt10_cfi',Kby(9,300)) -steps['SingleElectronPt35_UPG2015']=gen2015('SingleElectronPt35_cfi',Kby(9,500)) -steps['SingleElectronPt1000_UPG2015']=gen2015('SingleElectronPt1000_cfi',Kby(9,50)) -steps['SingleGammaPt10_UPG2015']=gen2015('SingleGammaPt10_cfi',Kby(9,300)) -steps['SingleGammaPt35_UPG2015']=gen2015('SingleGammaPt35_cfi',Kby(9,50)) -steps['SingleMuPt1_UPG2015']=gen2015('SingleMuPt1_cfi',Kby(25,1000)) -steps['SingleMuPt10_UPG2015']=gen2015('SingleMuPt10_cfi',Kby(25,500)) -steps['SingleMuPt100_UPG2015']=gen2015('SingleMuPt100_cfi',Kby(9,500)) -steps['SingleMuPt1000_UPG2015']=gen2015('SingleMuPt1000_cfi',Kby(9,500)) - -steps['TTbarLepton_UPG2015_8']=gen2015('TTbarLepton_Tauola_8TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_80_120_UPG2015_8']=gen2015('Wjet_Pt_80_120_8TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_3000_3500_UPG2015_8']=gen2015('Wjet_Pt_3000_3500_8TeV_cfi',Kby(9,50)) -steps['LM1_sfts_UPG2015_8']=gen2015('LM1_sfts_8TeV_cfi',Kby(9,100)) - -steps['QCD_Pt_3000_3500_UPG2015_8']=gen2015('QCD_Pt_3000_3500_8TeV_cfi',Kby(9,25)) -steps['QCD_Pt_600_800_UPG2015_8']=gen2015('QCD_Pt_600_800_8TeV_cfi',Kby(9,50)) -steps['QCD_Pt_80_120_UPG2015_8']=gen2015('QCD_Pt_80_120_8TeV_cfi',Kby(9,100)) - -steps['Higgs200ChargedTaus_UPG2015_8']=gen2015('H200ChargedTaus_Tauola_8TeV_cfi',Kby(9,100)) -steps['JpsiMM_UPG2015_8']=gen2015('JpsiMM_8TeV_cfi',Kby(66,1000)) -steps['TTbar_UPG2015_8']=gen2015('TTbar_Tauola_8TeV_cfi',Kby(9,100)) -steps['WE_UPG2015_8']=gen2015('WE_8TeV_cfi',Kby(9,100)) -steps['ZEE_UPG2015_8']=gen2015('ZEE_8TeV_cfi',Kby(9,100)) -steps['ZTT_UPG2015_8']=gen2015('ZTT_Tauola_All_hadronic_8TeV_cfi',Kby(9,150)) -steps['H130GGgluonfusion_UPG2015_8']=gen2015('H130GGgluonfusion_8TeV_cfi',Kby(9,100)) -steps['PhotonJets_Pt_10_UPG2015_8']=gen2015('PhotonJet_Pt_10_8TeV_cfi',Kby(9,150)) -steps['QQH1352T_Tauola_UPG2015_8']=gen2015('QQH1352T_Tauola_8TeV_cfi',Kby(9,100)) - -steps['MinBias_TuneZ2star_UPG2015_8']=gen2015('MinBias_TuneZ2star_8TeV_pythia6_cff',Kby(9,300)) -steps['WM_UPG2015_8']=gen2015('WM_8TeV_cfi',Kby(9,200)) -steps['ZMM_UPG2015_8']=gen2015('ZMM_8TeV_cfi',Kby(18,300)) - -steps['ADDMonoJet_d3MD3_UPG2015_8']=gen2015('ADDMonoJet_8TeV_d3MD3_cfi',Kby(9,100)) -steps['ZpMM_UPG2015_8']=gen2015('ZpMM_8TeV_cfi',Kby(9,200)) -steps['WpM_UPG2015_8']=gen2015('WpM_8TeV_cfi',Kby(9,200)) - - - -#14TeV -#steps['TTbarLepton_UPG2015_14']=gen2015('TTbarLepton_Tauola_14TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_80_120_UPG2015_14']=gen2015('Wjet_Pt_80_120_14TeV_cfi',Kby(9,100)) -steps['Wjet_Pt_3000_3500_UPG2015_14']=gen2015('Wjet_Pt_3000_3500_14TeV_cfi',Kby(9,50)) -steps['LM1_sfts_UPG2015_14']=gen2015('LM1_sfts_14TeV_cfi',Kby(9,100)) - -steps['QCD_Pt_3000_3500_UPG2015_14']=gen2015('QCD_Pt_3000_3500_14TeV_cfi',Kby(9,25)) -#steps['QCD_Pt_600_800_UPG2015_14']=gen2015('QCD_Pt_600_800_14TeV_cfi',Kby(9,50)) -steps['QCD_Pt_80_120_UPG2015_14']=gen2015('QCD_Pt_80_120_14TeV_cfi',Kby(9,100)) - -steps['Higgs200ChargedTaus_UPG2015_14']=gen2015('H200ChargedTaus_Tauola_14TeV_cfi',Kby(9,100)) -steps['JpsiMM_UPG2015_14']=gen2015('JpsiMM_14TeV_cfi',Kby(66,1000)) -steps['TTbar_UPG2015_14']=gen2015('TTbar_Tauola_14TeV_cfi',Kby(9,100)) -steps['WE_UPG2015_14']=gen2015('WE_14TeV_cfi',Kby(9,100)) -steps['ZEE_UPG2015_14']=gen2015('ZEE_14TeV_cfi',Kby(9,100)) -steps['ZTT_UPG2015_14']=gen2015('ZTT_Tauola_All_hadronic_14TeV_cfi',Kby(9,150)) -steps['H130GGgluonfusion_UPG2015_14']=gen2015('H130GGgluonfusion_14TeV_cfi',Kby(9,100)) -steps['PhotonJets_Pt_10_UPG2015_14']=gen2015('PhotonJet_Pt_10_14TeV_cfi',Kby(9,150)) -steps['QQH1352T_Tauola_UPG2015_14']=gen2015('QQH1352T_Tauola_14TeV_cfi',Kby(9,100)) - -steps['MinBias_TuneZ2star_UPG2015_14']=gen2015('MinBias_TuneZ2star_14TeV_pythia6_cff',Kby(9,300)) -steps['WM_UPG2015_14']=gen2015('WM_14TeV_cfi',Kby(9,200)) -steps['ZMM_UPG2015_14']=gen2015('ZMM_14TeV_cfi',Kby(18,300)) - -#steps['ADDMonoJet_d3MD3_UPG2015_14']=gen2015('ADDMonoJet_14TeV_d3MD3_cfi',Kby(9,100)) -#steps['ZpMM_UPG2015_14']=gen2015('ZpMM_14TeV_cfi',Kby(9,200)) -#steps['WpM_UPG2015_14']=gen2015('WpM_14TeV_cfi',Kby(9,200)) - - step1Up2017Defaults = {'-s' : 'GEN,SIM', '-n' : 10, @@ -1549,27 +1380,6 @@ def genvalid(fragment,d,suffix='all',fi=''): #wmsplit['DIGIHI']=5 -#for pix phase1 -step2Upgpixphase1Defaults = {'-s':'DIGI,L1,DIGI2RAW', - '--conditions':'DESIGN61_V10::All', #to be updtaed with autocond - '--datatier':'GEN-SIM-DIGI-RAW', - '-n':'10', - '--eventcontent':'FEVTDEBUGHLT', - '--customise': 'SLHCUpgradeSimulations/Configuration/phase1TkCustoms.customise', - '--geometry' : 'ExtendedPhaseIPixel' - } -steps['DIGIUP']=merge([step2Upgpixphase1Defaults]) - -#for 2015 -step2Upg2015Defaults = {'-s':'DIGI,L1,DIGI2RAW', - '--conditions':'auto:upgradePLS1', - '--datatier':'GEN-SIM-DIGI-RAW', - '-n':'10', - '--eventcontent':'FEVTDEBUGHLT', - '--customise': 'SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1', - '--geometry' : 'Extended2015' - } -steps['DIGIUP15']=merge([step2Upg2015Defaults]) #for 2017 step2Upg2017Defaults = {'-s':'DIGI,L1,DIGI2RAW', @@ -2196,33 +2006,6 @@ def genvalid(fragment,d,suffix='all',fi=''): steps['RECOFS']=merge([{'--fast':'', '-s':'RECO,EI,HLT:@relval,VALIDATION'}, steps['RECO']]) -#for phase1 -step3Upgpixphase1Defaults = {'-s':'RAW2DIGI,L1Reco,RECO,EI,VALIDATION,DQM', - '--conditions':'DESIGN61_V10::All', #to be updtaed with autocond - '--datatier':'GEN-SIM-RECO,DQM', - '-n':'10', - '--magField' : '38T_PostLS1', - '--eventcontent':'FEVTDEBUGHLT,DQM', - '--customise' : 'SLHCUpgradeSimulations/Configuration/phase1TkCustoms.customise', - '--geometry' : 'ExtendedPhaseIPixel' - } - - -steps['RECOUP']=merge([step3Upgpixphase1Defaults]) - - -#for 2015 -step3Up2015Defaults = {'-s':'RAW2DIGI,L1Reco,RECO,EI,VALIDATION,DQM', - '--conditions':'auto:upgradePLS1', - '--magField' : '38T_PostLS1', - '--datatier':'GEN-SIM-RECO,DQM', - '-n':'10', - '--eventcontent':'FEVTDEBUGHLT,DQM', - '--customise' : 'SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1', - '--geometry' : 'Extended2015' - } - -steps['RECOUP15']=merge([step3Up2015Defaults]) #for 2017 step3Up2017Defaults = {'-s':'RAW2DIGI,L1Reco,RECO,EI,VALIDATION,DQM', @@ -2887,20 +2670,6 @@ def genvalid(fragment,d,suffix='all',fi=''): '--mc':'', '--scenario':'HeavyIons'} -#for phase1 -steps['HARVESTUP']={'-s':'HARVESTING:validationHarvesting+dqmHarvesting', - '--conditions':'DESIGN61_V10::All', #to be updtaed with autocond - '--mc':'', - '--customise' : 'SLHCUpgradeSimulations/Configuration/phase1TkCustoms.customise', - '--geometry' : 'ExtendedPhaseIPixel' - } - -steps['HARVESTUP15']={'-s':'HARVESTING:validationHarvesting+dqmHarvesting', - '--conditions':'auto:upgradePLS1', - '--mc':'', - '--customise' : 'SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1', - '--geometry' : 'Extended2015' - } steps['HARVESTUP17']={'-s':'HARVESTING:validationHarvesting+dqmHarvesting', '--conditions':'auto:upgrade2017', '--magField' : '38T_PostLS1', diff --git a/Configuration/PyReleaseValidation/python/relval_upgrade.py b/Configuration/PyReleaseValidation/python/relval_upgrade.py index b553eb7736ad5..16052002fdbf9 100644 --- a/Configuration/PyReleaseValidation/python/relval_upgrade.py +++ b/Configuration/PyReleaseValidation/python/relval_upgrade.py @@ -9,150 +9,6 @@ # if no explicit name/label given for the workflow (first arg), # the name of step1 will be used -#ExtendedPhase1 -#part gun -workflows[3100] = ['', ['FourMuPt1_200_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3101] = ['', ['SingleElectronPt10_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3102] = ['', ['SingleElectronPt1000_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3103] = ['', ['SingleElectronPt35_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3104] = ['', ['SingleGammaPt10_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3105] = ['', ['SingleGammaPt35_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3106] = ['', ['SingleMuPt1_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3107] = ['', ['SingleMuPt10_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3108] = ['', ['SingleMuPt100_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] -workflows[3109] = ['', ['SingleMuPt1000_UPGPhase1','DIGIUP','RECOUP','HARVESTUP']] - -#std wf @8TeV -workflows[3110] = ['', ['TTbarLepton_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3111] = ['', ['Wjet_Pt_80_120_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3112] = ['', ['Wjet_Pt_3000_3500_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3113] = ['', ['LM1_sfts_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] - -workflows[3114] = ['', ['QCD_Pt_3000_3500_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3115] = ['', ['QCD_Pt_600_800_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3116] = ['', ['QCD_Pt_80_120_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] - -workflows[3117] = ['', ['Higgs200ChargedTaus_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3118] = ['', ['JpsiMM_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3119] = ['', ['TTbar_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3120] = ['', ['WE_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3121] = ['', ['ZEE_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3122] = ['', ['ZTT_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3123] = ['', ['H130GGgluonfusion_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3124] = ['', ['PhotonJets_Pt_10_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3125] = ['', ['QQH1352T_Tauola_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] - -workflows[3126] = ['', ['MinBias_TuneZ2star_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3127] = ['', ['WM_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3128] = ['', ['ZMM_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] - -workflows[3129] = ['', ['ADDMonoJet_d3MD3_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3130] = ['', ['ZpMM_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] -workflows[3131] = ['', ['WpM_UPGPhase1_8','DIGIUP','RECOUP','HARVESTUP']] - - -#std wf @14TeV -#workflows[3132] = ['', ['TTbarLepton_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] #no gen fragment -workflows[3133] = ['', ['Wjet_Pt_80_120_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3134] = ['', ['Wjet_Pt_3000_3500_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3135] = ['', ['LM1_sfts_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] - - -workflows[3136] = ['', ['QCD_Pt_3000_3500_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -#workflows[3137] = ['', ['QCD_Pt_600_800_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] #no gen fragment -workflows[3138] = ['', ['QCD_Pt_80_120_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] - - -workflows[3139] = ['', ['Higgs200ChargedTaus_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3140] = ['', ['JpsiMM_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3141] = ['', ['TTbar_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3142] = ['', ['WE_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3143] = ['', ['ZEE_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3144] = ['', ['ZTT_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3145] = ['', ['H130GGgluonfusion_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3146] = ['', ['PhotonJets_Pt_10_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3147] = ['', ['QQH1352T_Tauola_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] - -workflows[3148] = ['', ['MinBias_TuneZ2star_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3149] = ['', ['WM_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] -workflows[3150] = ['', ['ZMM_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']] - -#workflows[3151] = ['', ['ADDMonoJet_d3MD3_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']]#no gen fragment -#workflows[3152] = ['', ['ZpMM_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']]#no gen fragment -#workflows[3153] = ['', ['WpM_UPGPhase1_14','DIGIUP','RECOUP','HARVESTUP']]#no gen fragment - - -#2015 -#part gun -workflows[3200] = [ 'FourMuPt1_200' , ['FourMuPt1_200_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3201] = [ 'SingleElectronPt10' , ['SingleElectronPt10_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3202] = [ 'SingleElectronPt1000' , ['SingleElectronPt1000_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3203] = [ 'SingleElectronPt35' , ['SingleElectronPt35_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3204] = [ 'SingleGammaPt10' , ['SingleGammaPt10_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3205] = [ 'SingleGammaPt35' , ['SingleGammaPt35_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3206] = [ 'SingleMuPt1' , ['SingleMuPt1_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3207] = [ 'SingleMuPt10' , ['SingleMuPt10_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3208] = [ 'SingleMuPt100' , ['SingleMuPt100_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3209] = [ 'SingleMuPt1000' , ['SingleMuPt1000_UPG2015','DIGIUP15','RECOUP15','HARVESTUP15']] - -#std wf @8TeV -workflows[3210] = [ 'TTbarLepton_8TeV' , ['TTbarLepton_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3211] = [ 'Wjet_Pt_80_120_8TeV' , ['Wjet_Pt_80_120_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3212] = [ 'Wjet_Pt_3000_3500_8TeV' , ['Wjet_Pt_3000_3500_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3213] = [ 'LM1_sfts_8TeV' , ['LM1_sfts_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] - -workflows[3214] = [ 'QCD_Pt_3000_3500_8TeV' , ['QCD_Pt_3000_3500_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3215] = [ 'QCD_Pt_600_800_8TeV' , ['QCD_Pt_600_800_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3216] = [ 'QCD_Pt_80_120_8TeV' , ['QCD_Pt_80_120_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] - -workflows[3217] = [ 'Higgs200ChargedTaus_8TeV' , ['Higgs200ChargedTaus_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3218] = [ 'JpsiMM_8TeV' , ['JpsiMM_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3219] = [ 'TTbar_8TeV' , ['TTbar_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3220] = [ 'WE_8TeV' , ['WE_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3221] = [ 'ZEE_8TeV' , ['ZEE_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3222] = [ 'ZTT_8TeV' , ['ZTT_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3223] = [ 'H130GGgluonfusion_8TeV' , ['H130GGgluonfusion_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3224] = [ 'PhotonJets_Pt_10_8TeV' , ['PhotonJets_Pt_10_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3225] = [ 'QQH1352T_Tauola_8TeV' , ['QQH1352T_Tauola_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] - -workflows[3226] = [ 'MinBias_TuneZ2star_8TeV' , ['MinBias_TuneZ2star_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3227] = [ 'WM_8TeV' , ['WM_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3228] = [ 'ZMM_8TeV' , ['ZMM_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] - -workflows[3229] = [ 'ADDMonoJet_d3MD3_8TeV' , ['ADDMonoJet_d3MD3_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3230] = [ 'ZpMM_8TeV' , ['ZpMM_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3231] = [ 'WpM_8TeV' , ['WpM_UPG2015_8','DIGIUP15','RECOUP15','HARVESTUP15']] - -#std wf @14TeV -#workflows[3232] = [ 'TTbarLepton_14TeV' , ['TTbarLepton_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] #no gen fragment -workflows[3233] = [ 'Wjet_Pt_80_120_14TeV' , ['Wjet_Pt_80_120_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3234] = [ 'Wjet_Pt_3000_3500_14TeV' , ['Wjet_Pt_3000_3500_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3235] = [ 'LM1_sfts_14TeV' , ['LM1_sfts_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] - - -workflows[3236] = [ 'QCD_Pt_3000_3500_14TeV' , ['QCD_Pt_3000_3500_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -#workflows[3237] = [ 'QCD_Pt_600_800_14TeV' , ['QCD_Pt_600_800_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] #no gen fragment -workflows[3238] = [ 'QCD_Pt_80_120_14TeV' , ['QCD_Pt_80_120_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] - - -workflows[3239] = [ 'Higgs200ChargedTaus_14TeV' , ['Higgs200ChargedTaus_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3240] = [ 'JpsiMM_14TeV' , ['JpsiMM_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3241] = [ 'TTbar_14TeV' , ['TTbar_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3242] = [ 'WE_14TeV' , ['WE_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3243] = [ 'ZEE_14TeV' , ['ZEE_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3244] = [ 'ZTT_14TeV' , ['ZTT_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3245] = [ 'H130GGgluonfusion_14TeV' , ['H130GGgluonfusion_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3246] = [ 'PhotonJets_Pt_10_14TeV' , ['PhotonJets_Pt_10_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3247] = [ 'QQH1352T_Tauola_14TeV' , ['QQH1352T_Tauola_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] - -workflows[3248] = [ 'MinBias_TuneZ2star_14TeV' , ['MinBias_TuneZ2star_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3249] = [ 'WM_14TeV' , ['WM_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] -workflows[3250] = [ 'ZMM_14TeV' , ['ZMM_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']] - -#workflows[3251] = [ 'ADDMonoJet_d3MD3_14TeV' , ['ADDMonoJet_d3MD3_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']]#no gen fragment -#workflows[3252] = [ 'ZpMM_14TeV' , ['ZpMM_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']]#no gen fragment -#workflows[3253] = [ 'WpM_14TeV' , ['WpM_UPG2015_14','DIGIUP15','RECOUP15','HARVESTUP15']]#no gen fragment - #2017 #part gun From 10993019f5fff88b284fd381710e541271d58521 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Thu, 22 Aug 2013 10:31:42 -0500 Subject: [PATCH 28/45] Try to see if this fixes the x-axis direction --- SimG4CMS/Muon/src/MuonGemFrameRotation.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SimG4CMS/Muon/src/MuonGemFrameRotation.cc b/SimG4CMS/Muon/src/MuonGemFrameRotation.cc index fbe60a5c8b0f9..406417bda5945 100644 --- a/SimG4CMS/Muon/src/MuonGemFrameRotation.cc +++ b/SimG4CMS/Muon/src/MuonGemFrameRotation.cc @@ -36,7 +36,8 @@ Local3DPoint MuonGemFrameRotation::transformPoint(const Local3DPoint & point,con << " Rotation " << rotated << std::endl; #endif if (rotated) { - return Local3DPoint(-point.x(),point.z(),point.y()); + // return Local3DPoint(-point.x(),point.z(),point.y()); + return Local3DPoint(point.x(),point.z(),-point.y()); } else { return Local3DPoint(point.x(),point.z(),-point.y()); } From 8a325e75a3ad753658c8ef3d07a84a32ddc215d6 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Thu, 19 Sep 2013 12:49:33 +0200 Subject: [PATCH 29/45] Correct the partitioning of the 8 partition GEM geometry --- Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml b/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml index 8d4258767a7a8..fd7ac5222e06e 100644 --- a/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml +++ b/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml @@ -4,14 +4,14 @@ - - - - - - - - + + + + + + + + From 5ee2f4f8631b65e22024cd37af219e310ebec586 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Fri, 26 Jul 2013 16:26:51 +0200 Subject: [PATCH 30/45] Correct the partitioning of the 8 partition GEM geometry --- Geometry/MuonCommonData/data/v4/gemf.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Geometry/MuonCommonData/data/v4/gemf.xml b/Geometry/MuonCommonData/data/v4/gemf.xml index 8d4258767a7a8..fd7ac5222e06e 100644 --- a/Geometry/MuonCommonData/data/v4/gemf.xml +++ b/Geometry/MuonCommonData/data/v4/gemf.xml @@ -4,14 +4,14 @@ - - - - - - - - + + + + + + + + From 2bc4b9b690ab642a1632af9a455d503860a5796d Mon Sep 17 00:00:00 2001 From: alja Date: Wed, 30 Oct 2013 21:58:41 -0700 Subject: [PATCH 31/45] Remove compilation warning (hits available in 7_0_pre3 and later.) --- .../plugins/FWTrackingParticleProxyBuilder.cc | 45 ------------------- 1 file changed, 45 deletions(-) diff --git a/Fireworks/SimData/plugins/FWTrackingParticleProxyBuilder.cc b/Fireworks/SimData/plugins/FWTrackingParticleProxyBuilder.cc index 8946d9a466ad4..0a0b9ae67401c 100644 --- a/Fireworks/SimData/plugins/FWTrackingParticleProxyBuilder.cc +++ b/Fireworks/SimData/plugins/FWTrackingParticleProxyBuilder.cc @@ -52,51 +52,6 @@ FWTrackingParticleProxyBuilder::build( const TrackingParticle& iData, unsigned i if( t.fSign == 0 ) track->SetLineStyle( 7 ); - TEvePointSet* pointSet = new TEvePointSet; - setupAddElement( pointSet, track ); - pointSet->SetMarkerSize(item()->getConfig()->value("Point Size")); -#warning "This file has been modified just to get it to compile without any regard as to whether it still functions as intended" -#ifdef REMOVED_JUST_TO_GET_IT_TO_COMPILE__THIS_CODE_NEEDS_TO_BE_CHECKED - const FWGeometry *geom = item()->getGeom(); - const std::vector& hits = iData.trackPSimHit(); - - float local[3]; - float localDir[3]; - float global[3] = { 0.0, 0.0, 0.0 }; - float globalDir[3] = { 0.0, 0.0, 0.0 }; - std::vector::const_iterator it = hits.begin(); - std::vector::const_iterator end = hits.end(); - if( it != end ) - { - unsigned int trackid = hits.begin()->trackId(); - - for( ; it != end; ++it ) - { - const PSimHit& phit = (*it); - if( phit.trackId() != trackid ) - { - trackid = phit.trackId(); - track->AddPathMark( TEvePathMark( TEvePathMark::kDecay, TEveVector( global[0], global[1], global[2] ), - TEveVector( globalDir[0], globalDir[1], globalDir[2] ))); - } - local[0] = phit.localPosition().x(); - local[1] = phit.localPosition().y(); - local[2] = phit.localPosition().z(); - localDir[0] = phit.momentumAtEntry().x(); - localDir[1] = phit.momentumAtEntry().y(); - localDir[2] = phit.momentumAtEntry().z(); - geom->localToGlobal( phit.detUnitId(), local, global ); - geom->localToGlobal( phit.detUnitId(), localDir, globalDir ); - pointSet->SetNextPoint( global[0], global[1], global[2] ); - track->AddPathMark( TEvePathMark( TEvePathMark::kReference/*kDaughter*/, TEveVector( global[0], global[1], global[2] ), - TEveVector( globalDir[0], globalDir[1], globalDir[2] ))); - } - if( hits.size() > 1 ) - track->AddPathMark( TEvePathMark( TEvePathMark::kDecay, TEveVector( global[0], global[1], global[2] ), - TEveVector( globalDir[0], globalDir[1], globalDir[2] ))); - } -#endif - track->MakeTrack(); setupAddElement( track, &oItemHolder ); } From 0d7cb2c9b80ee2d236a9542239ae738ed2100fa3 Mon Sep 17 00:00:00 2001 From: Salavat Date: Thu, 31 Oct 2013 10:39:37 +0100 Subject: [PATCH 32/45] update of HcalDigis validation for SLHC --- .../HcalDigis/interface/HcalDigisClient.h | 2 + .../HcalDigis/interface/HcalDigisValidation.h | 1 + Validation/HcalDigis/src/HcalDigisClient.cc | 89 ++++++++++++++++--- .../HcalDigis/src/HcalDigisValidation.cc | 88 +++++++++++++++++- 4 files changed, 166 insertions(+), 14 deletions(-) diff --git a/Validation/HcalDigis/interface/HcalDigisClient.h b/Validation/HcalDigis/interface/HcalDigisClient.h index d42fbe85d1e39..74ace21a70290 100644 --- a/Validation/HcalDigis/interface/HcalDigisClient.h +++ b/Validation/HcalDigis/interface/HcalDigisClient.h @@ -61,6 +61,8 @@ class HcalDigisClient : public edm::EDAnalyzer { double max; }; + bool doslhc_; + virtual void runClient(); int HcalDigisEndjob(const std::vector &hcalMEs, std::string subdet_); diff --git a/Validation/HcalDigis/interface/HcalDigisValidation.h b/Validation/HcalDigis/interface/HcalDigisValidation.h index b5387b68b4f0a..d63228772f85c 100644 --- a/Validation/HcalDigis/interface/HcalDigisValidation.h +++ b/Validation/HcalDigis/interface/HcalDigisValidation.h @@ -107,6 +107,7 @@ class HcalDigisValidation : public edm::EDAnalyzer { std::string mode_; std::string mc_; int noise_; + bool doSLHC_; edm::ESHandle geometry; edm::ESHandle conditions; diff --git a/Validation/HcalDigis/src/HcalDigisClient.cc b/Validation/HcalDigis/src/HcalDigisClient.cc index 3c5ec465d3c90..9661615b5865b 100644 --- a/Validation/HcalDigis/src/HcalDigisClient.cc +++ b/Validation/HcalDigis/src/HcalDigisClient.cc @@ -37,6 +37,9 @@ HcalDigisClient::HcalDigisClient(const edm::ParameterSet& iConfig) { booking("HE"); booking("HO"); booking("HF"); + // false for regular rel val and true for SLHC rel val + doslhc_ = false; + } void HcalDigisClient::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { @@ -50,7 +53,10 @@ void HcalDigisClient::booking(std::string subdetopt) { std::string strtmp; HistLim ietaLim(82, -41., 41.); - for (int depth = 1; depth <= 4; depth++) { + int n_depth = 4; + if (doslhc_){n_depth = 7;} + + for (int depth = 1; depth <= n_depth; depth++) { strtmp = "HcalDigiTask_occupancy_vs_ieta_depth" + str(depth) + "_" + subdetopt; book1D(strtmp, ietaLim); } @@ -93,7 +99,9 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs MonitorElement * ieta_iphi_occupancy_map2(0); MonitorElement * ieta_iphi_occupancy_map3(0); MonitorElement * ieta_iphi_occupancy_map4(0); - + MonitorElement * ieta_iphi_occupancy_map5(0); + MonitorElement * ieta_iphi_occupancy_map6(0); + MonitorElement * ieta_iphi_occupancy_map7(0); std::cout << " Number of histos " << hcalMEs.size() << std::endl; @@ -108,18 +116,45 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs if (hcalMEs[ih]->getName() == strtmp) ieta_iphi_occupancy_map3 = hcalMEs[ih]; strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth4_" + subdet_; if (hcalMEs[ih]->getName() == strtmp) ieta_iphi_occupancy_map4 = hcalMEs[ih]; - + + if (doslhc_){ + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth5_" + subdet_; + if (hcalMEs[ih]->getName() == strtmp) ieta_iphi_occupancy_map5 = hcalMEs[ih]; + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth6_" + subdet_; + if (hcalMEs[ih]->getName() == strtmp) ieta_iphi_occupancy_map6 = hcalMEs[ih]; + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth7_" + subdet_; + if (hcalMEs[ih]->getName() == strtmp) ieta_iphi_occupancy_map7 = hcalMEs[ih]; + } }// - if (nevtot == 0 || - ieta_iphi_occupancy_map1 == 0 || - ieta_iphi_occupancy_map2 == 0 || - ieta_iphi_occupancy_map3 == 0 || - ieta_iphi_occupancy_map4 == 0 - ) { - edm::LogError("HcalDigisClient") << "No nevtot or maps histo found..."; - return 0; + + if (doslhc_ == false){ + if (nevtot == 0 || + ieta_iphi_occupancy_map1 == 0 || + ieta_iphi_occupancy_map2 == 0 || + ieta_iphi_occupancy_map3 == 0 || + ieta_iphi_occupancy_map4 == 0 + ) { + edm::LogError("HcalDigisClient") << "No nevtot or maps histo found..."; + return 0; + } } + else { + if (nevtot == 0 || + ieta_iphi_occupancy_map1 == 0 || + ieta_iphi_occupancy_map2 == 0 || + ieta_iphi_occupancy_map3 == 0 || + ieta_iphi_occupancy_map4 == 0 || + ieta_iphi_occupancy_map5 == 0 || + ieta_iphi_occupancy_map6 == 0 || + ieta_iphi_occupancy_map7 == 0 + ) { + edm::LogError("HcalDigisClient") << "No nevtot or maps histo found..."; + return 0; + } + } + + int ev = nevtot->getEntries(); if(ev <= 0) { @@ -131,7 +166,7 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs int nx = ieta_iphi_occupancy_map1->getNbinsX(); int ny = ieta_iphi_occupancy_map1->getNbinsY(); - float sumphi_1, sumphi_2, sumphi_3, sumphi_4; + float sumphi_1, sumphi_2, sumphi_3, sumphi_4, sumphi_5, sumphi_6, sumphi_7; float phi_factor; float cnorm; @@ -140,6 +175,9 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs sumphi_2 = 0.; sumphi_3 = 0.; sumphi_4 = 0.; + sumphi_5 = 0.; + sumphi_6 = 0.; + sumphi_7 = 0.; for (int j = 1; j <= ny; j++) { @@ -165,6 +203,21 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs ieta_iphi_occupancy_map4->setBinContent(i, j, cnorm); sumphi_4 += ieta_iphi_occupancy_map4->getBinContent(i, j); + if (doslhc_){ + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth5_" + subdet_; + cnorm = ieta_iphi_occupancy_map5->getBinContent(i, j) / fev; + ieta_iphi_occupancy_map5->setBinContent(i, j, cnorm); + sumphi_5 += ieta_iphi_occupancy_map5->getBinContent(i, j); + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth6_" + subdet_; + cnorm = ieta_iphi_occupancy_map6->getBinContent(i, j) / fev; + ieta_iphi_occupancy_map6->setBinContent(i, j, cnorm); + sumphi_6 += ieta_iphi_occupancy_map6->getBinContent(i, j); + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth7_" + subdet_; + cnorm = ieta_iphi_occupancy_map7->getBinContent(i, j) / fev; + ieta_iphi_occupancy_map7->setBinContent(i, j, cnorm); + sumphi_7 += ieta_iphi_occupancy_map7->getBinContent(i, j); + } + } int ieta = i - 42; // -41 -1, 0 40 @@ -199,6 +252,18 @@ int HcalDigisClient::HcalDigisEndjob(const std::vector &hcalMEs strtmp = "HcalDigiTask_occupancy_vs_ieta_depth4_" + subdet_; fill1D(strtmp, deta, cnorm); + if (doslhc_){ + cnorm = sumphi_5 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth5_" + subdet_; + fill1D(strtmp, deta, cnorm); + cnorm = sumphi_6 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth6_" + subdet_; + fill1D(strtmp, deta, cnorm); + cnorm = sumphi_7 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth7_" + subdet_; + fill1D(strtmp, deta, cnorm); + } + } // end of i-loop return 1; diff --git a/Validation/HcalDigis/src/HcalDigisValidation.cc b/Validation/HcalDigis/src/HcalDigisValidation.cc index f917ebc8f5be1..1615fe31879c7 100644 --- a/Validation/HcalDigis/src/HcalDigisValidation.cc +++ b/Validation/HcalDigis/src/HcalDigisValidation.cc @@ -30,6 +30,9 @@ HcalDigisValidation::HcalDigisValidation(const edm::ParameterSet& iConfig) { mc_ = iConfig.getUntrackedParameter ("mc", "no"); mode_ = iConfig.getUntrackedParameter ("mode", "multi"); dirName_ = iConfig.getUntrackedParameter ("dirName", "HcalDigisV/HcalDigiTask"); + + // false for regular rel val and true for SLHC rel val + doSLHC_ = false; dbe_ = edm::Service ().operator->(); msm_ = new std::map(); @@ -121,6 +124,16 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_ieta_iphi_occupancy_map_depth4_%s", sub); book2D(histo, ietaLim, iphiLim); + if (doSLHC_){ + sprintf(histo, "HcalDigiTask_ieta_iphi_occupancy_map_depth5_%s", sub); + book2D(histo, ietaLim, iphiLim); + sprintf(histo, "HcalDigiTask_ieta_iphi_occupancy_map_depth6_%s", sub); + book2D(histo, ietaLim, iphiLim); + sprintf(histo, "HcalDigiTask_ieta_iphi_occupancy_map_depth7_%s", sub); + book2D(histo, ietaLim, iphiLim); + } + + // occupancies vs ieta sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth1_%s", sub); book1D(histo, ietaLim); @@ -134,6 +147,15 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth4_%s", sub); book1D(histo, ietaLim); + if (doSLHC_){ + sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth5_%s", sub); + book1D(histo, ietaLim); + sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth6_%s", sub); + book1D(histo, ietaLim); + sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth7_%s", sub); + book1D(histo, ietaLim); + } + // maps of sum of amplitudes (sum lin.digis(4,5,6,7) - ped) all depths /* @@ -162,6 +184,7 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_ADC0_adc_depth4_%s", sub); book1D(histo, pedestal); + sprintf(histo, "HcalDigiTask_ADC0_fC_depth1_%s", sub); book1D(histo, pedestalfC); sprintf(histo, "HcalDigiTask_ADC0_fC_depth2_%s", sub); @@ -171,6 +194,7 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_ADC0_fC_depth4_%s", sub); book1D(histo, pedestalfC); + sprintf(histo, "HcalDigiTask_signal_amplitude_%s", sub); book1D(histo, digiAmp); sprintf(histo, "HcalDigiTask_signal_amplitude_depth1_%s", sub); @@ -182,6 +206,15 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_signal_amplitude_depth4_%s", sub); book1D(histo, digiAmp); + if (doSLHC_){ + sprintf(histo, "HcalDigiTask_signal_amplitude_depth5_%s", sub); + book1D(histo, digiAmp); + sprintf(histo, "HcalDigiTask_signal_amplitude_depth6_%s", sub); + book1D(histo, digiAmp); + sprintf(histo, "HcalDigiTask_signal_amplitude_depth7_%s", sub); + book1D(histo, digiAmp); + } + sprintf(histo, "HcalDigiTask_signal_amplitude_vs_bin_all_depths_%s", sub); book2D(histo, nbin, digiAmp); @@ -213,6 +246,7 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_depth4_%s", sub); book2D(histo, sime, digiAmp); + sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_profile_%s", sub); bookPf(histo, sime, digiAmp); sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_profile_depth1_%s", sub); @@ -224,6 +258,7 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_profile_depth4_%s", sub); bookPf(histo, sime, digiAmp); + sprintf(histo, "HcalDigiTask_ratio_amplitude_vs_simhits_%s", sub); book1D(histo, ratio); sprintf(histo, "HcalDigiTask_ratio_amplitude_vs_simhits_depth1_%s", sub); @@ -234,6 +269,8 @@ void HcalDigisValidation::booking(const std::string bsubdet, int bnoise, int bmc book1D(histo, ratio); sprintf(histo, "HcalDigiTask_ratio_amplitude_vs_simhits_depth4_%s", sub); book1D(histo, ratio); + + }//mc only } else { // noise only @@ -499,6 +536,9 @@ template void HcalDigisValidation::reco(const edm::Event& iEvent, co double ampl2_c = 0.; double ampl3_c = 0.; double ampl4_c = 0.; + double ampl5_c = 0.; + double ampl6_c = 0.; + double ampl7_c = 0.; double ampl_c = 0.; // is set to 1 if "seed" SimHit is found @@ -576,7 +616,9 @@ template void HcalDigisValidation::reco(const edm::Event& iEvent, co double ampl2 = 0.; double ampl3 = 0.; double ampl4 = 0.; - + double ampl5 = 0.; + double ampl6 = 0.; + double ampl7 = 0.; // Gains, pedestals (once !) and only for "noise" case if (((nevent1 == 1 && isubdet == 1) || @@ -665,6 +707,9 @@ template void HcalDigisValidation::reco(const edm::Event& iEvent, co if (depth == 2) ampl2 += val; if (depth == 3) ampl3 += val; if (depth == 4) ampl4 += val; + if (depth == 5) ampl5 += val; + if (depth == 6) ampl6 += val; + if (depth == 7) ampl7 += val; if (closen == 1) { ampl_c += val; @@ -672,6 +717,9 @@ template void HcalDigisValidation::reco(const edm::Event& iEvent, co if (depth == 2) ampl2_c += val; if (depth == 3) ampl3_c += val; if (depth == 4) ampl4_c += val; + if (depth == 5) ampl5_c += val; + if (depth == 6) ampl6_c += val; + if (depth == 7) ampl7_c += val; } } @@ -682,12 +730,18 @@ template void HcalDigisValidation::reco(const edm::Event& iEvent, co if (depth == 2) ampl2 += val; if (depth == 3) ampl3 += val; if (depth == 4) ampl4 += val; + if (depth == 5) ampl5 += val; + if (depth == 6) ampl6 += val; + if (depth == 7) ampl7 += val; if (closen == 1) { ampl_c += val; if (depth == 1) ampl1_c += val; if (depth == 2) ampl2_c += val; if (depth == 3) ampl3_c += val; if (depth == 4) ampl4_c += val; + if (depth == 5) ampl5_c += val; + if (depth == 6) ampl6_c += val; + if (depth == 7) ampl7_c += val; } } @@ -847,7 +901,7 @@ void HcalDigisValidation::eval_occupancy() { float fev = float (nevtot); std::cout << "*** nevtot " << nevtot << std::endl; - float sumphi_1, sumphi_2, sumphi_3, sumphi_4; + float sumphi_1, sumphi_2, sumphi_3, sumphi_4, sumphi_5, sumphi_6, sumphi_7; float phi_factor; for (int i = 1; i <= nx; i++) { @@ -855,6 +909,9 @@ void HcalDigisValidation::eval_occupancy() { sumphi_2 = 0.; sumphi_3 = 0.; sumphi_4 = 0.; + sumphi_5 = 0.; + sumphi_6 = 0.; + sumphi_7 = 0.; for (int j = 1; j <= ny; j++) { @@ -880,6 +937,21 @@ void HcalDigisValidation::eval_occupancy() { monitor(strtmp)->setBinContent(i, j, cnorm); sumphi_4 += monitor(strtmp)->getBinContent(i, j); + if (doSLHC_){ + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth5_" + subdet_; + cnorm = monitor(strtmp)->getBinContent(i, j) / fev; + monitor(strtmp)->setBinContent(i, j, cnorm); + sumphi_5 += monitor(strtmp)->getBinContent(i, j); + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth6_" + subdet_; + cnorm = monitor(strtmp)->getBinContent(i, j) / fev; + monitor(strtmp)->setBinContent(i, j, cnorm); + sumphi_6 += monitor(strtmp)->getBinContent(i, j); + strtmp = "HcalDigiTask_ieta_iphi_occupancy_map_depth7_" + subdet_; + cnorm = monitor(strtmp)->getBinContent(i, j) / fev; + monitor(strtmp)->setBinContent(i, j, cnorm); + sumphi_7 += monitor(strtmp)->getBinContent(i, j); + } + } int ieta = i - 42; // -41 -1, 0 40 @@ -915,6 +987,18 @@ void HcalDigisValidation::eval_occupancy() { strtmp = "HcalDigiTask_occupancy_vs_ieta_depth4_" + subdet_; fill1D(strtmp, deta, cnorm); + if (doSLHC_){ + cnorm = sumphi_5 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth5_" + subdet_; + fill1D(strtmp, deta, cnorm); + cnorm = sumphi_6 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth6_" + subdet_; + fill1D(strtmp, deta, cnorm); + cnorm = sumphi_7 / phi_factor; + strtmp = "HcalDigiTask_occupancy_vs_ieta_depth7_" + subdet_; + fill1D(strtmp, deta, cnorm); + } + } // end of i-loop } From b8708c42516c39f25786c74671b5370f2b24c448 Mon Sep 17 00:00:00 2001 From: Salavat Date: Thu, 31 Oct 2013 10:40:02 +0100 Subject: [PATCH 33/45] update of HcalRecHits validation for SLHC --- .../HcalRecHits/interface/HcalRecHitsClient.h | 1 + .../interface/HcalRecHitsValidation.h | 101 +++++ .../HcalRecHits/src/HcalRecHitsClient.cc | 279 +++++++++++-- .../HcalRecHits/src/HcalRecHitsValidation.cc | 368 +++++++++++++++++- 4 files changed, 717 insertions(+), 32 deletions(-) diff --git a/Validation/HcalRecHits/interface/HcalRecHitsClient.h b/Validation/HcalRecHits/interface/HcalRecHitsClient.h index 4b29b56061021..df4bc245d002a 100644 --- a/Validation/HcalRecHits/interface/HcalRecHitsClient.h +++ b/Validation/HcalRecHits/interface/HcalRecHitsClient.h @@ -43,6 +43,7 @@ class HcalRecHitsClient : public edm::EDAnalyzer { bool verbose_; bool debug_; + bool doslhc_; std::string dirName_; std::string dirNameJet_; diff --git a/Validation/HcalRecHits/interface/HcalRecHitsValidation.h b/Validation/HcalRecHits/interface/HcalRecHitsValidation.h index e6d510061926b..df6031e1644dd 100644 --- a/Validation/HcalRecHits/interface/HcalRecHitsValidation.h +++ b/Validation/HcalRecHits/interface/HcalRecHitsValidation.h @@ -79,6 +79,7 @@ class HcalRecHitsValidation : public edm::EDAnalyzer { std::string mc_; bool famos_; bool useAllHistos_; + bool doSLHC_; //RecHit Collection input tags edm::InputTag theHBHERecHitCollectionLabel; @@ -157,66 +158,147 @@ class HcalRecHitsValidation : public edm::EDAnalyzer { MonitorElement* emap_depth2; MonitorElement* emap_depth3; MonitorElement* emap_depth4; + MonitorElement* emap_depth5; + MonitorElement* emap_depth6; + MonitorElement* emap_depth7; MonitorElement* emean_vs_ieta_HB1; MonitorElement* emean_vs_ieta_HB2; + MonitorElement* emean_vs_ieta_HB3; + MonitorElement* emean_vs_ieta_HB4; + MonitorElement* emean_vs_ieta_HB5; + MonitorElement* emean_vs_ieta_HB6; + MonitorElement* emean_vs_ieta_HB7; + MonitorElement* emean_vs_ieta_HE1; MonitorElement* emean_vs_ieta_HE2; MonitorElement* emean_vs_ieta_HE3; + MonitorElement* emean_vs_ieta_HE4; + MonitorElement* emean_vs_ieta_HE5; + MonitorElement* emean_vs_ieta_HE6; + MonitorElement* emean_vs_ieta_HE7; + MonitorElement* emean_vs_ieta_HO; MonitorElement* emean_vs_ieta_HF1; MonitorElement* emean_vs_ieta_HF2; MonitorElement* RMS_vs_ieta_HB1; MonitorElement* RMS_vs_ieta_HB2; + MonitorElement* RMS_vs_ieta_HB3; + MonitorElement* RMS_vs_ieta_HB4; + MonitorElement* RMS_vs_ieta_HB5; + MonitorElement* RMS_vs_ieta_HB6; + MonitorElement* RMS_vs_ieta_HB7; + MonitorElement* RMS_vs_ieta_HE1; MonitorElement* RMS_vs_ieta_HE2; MonitorElement* RMS_vs_ieta_HE3; + MonitorElement* RMS_vs_ieta_HE4; + MonitorElement* RMS_vs_ieta_HE5; + MonitorElement* RMS_vs_ieta_HE6; + MonitorElement* RMS_vs_ieta_HE7; + MonitorElement* RMS_vs_ieta_HO; MonitorElement* RMS_vs_ieta_HF1; MonitorElement* RMS_vs_ieta_HF2; MonitorElement* emean_seqHB1; MonitorElement* emean_seqHB2; + MonitorElement* emean_seqHB3; + MonitorElement* emean_seqHB4; + MonitorElement* emean_seqHB5; + MonitorElement* emean_seqHB6; + MonitorElement* emean_seqHB7; + MonitorElement* emean_seqHE1; MonitorElement* emean_seqHE2; MonitorElement* emean_seqHE3; + MonitorElement* emean_seqHE4; + MonitorElement* emean_seqHE5; + MonitorElement* emean_seqHE6; + MonitorElement* emean_seqHE7; + MonitorElement* emean_seqHO; MonitorElement* emean_seqHF1; MonitorElement* emean_seqHF2; MonitorElement* RMS_seq_HB1; MonitorElement* RMS_seq_HB2; + MonitorElement* RMS_seq_HB3; + MonitorElement* RMS_seq_HB4; + MonitorElement* RMS_seq_HB5; + MonitorElement* RMS_seq_HB6; + MonitorElement* RMS_seq_HB7; + MonitorElement* RMS_seq_HE1; MonitorElement* RMS_seq_HE2; MonitorElement* RMS_seq_HE3; + MonitorElement* RMS_seq_HE4; + MonitorElement* RMS_seq_HE5; + MonitorElement* RMS_seq_HE6; + MonitorElement* RMS_seq_HE7; + MonitorElement* RMS_seq_HO; MonitorElement* RMS_seq_HF1; MonitorElement* RMS_seq_HF2; MonitorElement* occupancy_map_HB1; MonitorElement* occupancy_map_HB2; + MonitorElement* occupancy_map_HB3; + MonitorElement* occupancy_map_HB4; + MonitorElement* occupancy_map_HB5; + MonitorElement* occupancy_map_HB6; + MonitorElement* occupancy_map_HB7; + MonitorElement* occupancy_map_HE1; MonitorElement* occupancy_map_HE2; MonitorElement* occupancy_map_HE3; + MonitorElement* occupancy_map_HE4; + MonitorElement* occupancy_map_HE5; + MonitorElement* occupancy_map_HE6; + MonitorElement* occupancy_map_HE7; + MonitorElement* occupancy_map_HO; MonitorElement* occupancy_map_HF1; MonitorElement* occupancy_map_HF2; MonitorElement* occupancy_vs_ieta_HB1; MonitorElement* occupancy_vs_ieta_HB2; + MonitorElement* occupancy_vs_ieta_HB3; + MonitorElement* occupancy_vs_ieta_HB4; + MonitorElement* occupancy_vs_ieta_HB5; + MonitorElement* occupancy_vs_ieta_HB6; + MonitorElement* occupancy_vs_ieta_HB7; + MonitorElement* occupancy_vs_ieta_HE1; MonitorElement* occupancy_vs_ieta_HE2; MonitorElement* occupancy_vs_ieta_HE3; + MonitorElement* occupancy_vs_ieta_HE4; + MonitorElement* occupancy_vs_ieta_HE5; + MonitorElement* occupancy_vs_ieta_HE6; + MonitorElement* occupancy_vs_ieta_HE7; + MonitorElement* occupancy_vs_ieta_HO; MonitorElement* occupancy_vs_ieta_HF1; MonitorElement* occupancy_vs_ieta_HF2; MonitorElement* occupancy_seqHB1; MonitorElement* occupancy_seqHB2; + MonitorElement* occupancy_seqHB3; + MonitorElement* occupancy_seqHB4; + MonitorElement* occupancy_seqHB5; + MonitorElement* occupancy_seqHB6; + MonitorElement* occupancy_seqHB7; + MonitorElement* occupancy_seqHE1; MonitorElement* occupancy_seqHE2; MonitorElement* occupancy_seqHE3; + MonitorElement* occupancy_seqHE4; + MonitorElement* occupancy_seqHE5; + MonitorElement* occupancy_seqHE6; + MonitorElement* occupancy_seqHE7; + + MonitorElement* occupancy_seqHO; MonitorElement* occupancy_seqHF1; MonitorElement* occupancy_seqHF2; @@ -227,12 +309,19 @@ class HcalRecHitsValidation : public edm::EDAnalyzer { MonitorElement* map_econe_depth2; MonitorElement* map_econe_depth3; MonitorElement* map_econe_depth4; + MonitorElement* map_econe_depth5; + MonitorElement* map_econe_depth6; + MonitorElement* map_econe_depth7; + // for single monoenergetic particles - cone collection profile vs ieta. MonitorElement* meEnConeEtaProfile_depth1; MonitorElement* meEnConeEtaProfile_depth2; MonitorElement* meEnConeEtaProfile_depth3; MonitorElement* meEnConeEtaProfile_depth4; + MonitorElement* meEnConeEtaProfile_depth5; + MonitorElement* meEnConeEtaProfile_depth6; + MonitorElement* meEnConeEtaProfile_depth7; MonitorElement* meEnConeEtaProfile; MonitorElement* meEnConeEtaProfile_E; MonitorElement* meEnConeEtaProfile_EH; @@ -277,6 +366,12 @@ class HcalRecHitsValidation : public edm::EDAnalyzer { MonitorElement* meTE_High_HB; MonitorElement* meTE_HB1; MonitorElement* meTE_HB2; + MonitorElement* meTE_HB3; + MonitorElement* meTE_HB4; + MonitorElement* meTE_HB5; + MonitorElement* meTE_HB6; + MonitorElement* meTE_HB7; + MonitorElement* meTEprofileHB_Low; MonitorElement* meTEprofileHB; MonitorElement* meTEprofileHB_High; @@ -285,6 +380,12 @@ class HcalRecHitsValidation : public edm::EDAnalyzer { MonitorElement* meTE_HE; MonitorElement* meTE_HE1; MonitorElement* meTE_HE2; + MonitorElement* meTE_HE3; + MonitorElement* meTE_HE4; + MonitorElement* meTE_HE5; + MonitorElement* meTE_HE6; + MonitorElement* meTE_HE7; + MonitorElement* meTEprofileHE_Low; MonitorElement* meTEprofileHE; diff --git a/Validation/HcalRecHits/src/HcalRecHitsClient.cc b/Validation/HcalRecHits/src/HcalRecHitsClient.cc index 6dccc1647bfba..8891170eb88f7 100644 --- a/Validation/HcalRecHits/src/HcalRecHitsClient.cc +++ b/Validation/HcalRecHits/src/HcalRecHitsClient.cc @@ -24,6 +24,8 @@ HcalRecHitsClient::HcalRecHitsClient(const edm::ParameterSet& iConfig):conf_(iCo debug_ = false; verbose_ = false; + // false for regular relval and true for SLHC relval + doslhc_ = false; dirName_=iConfig.getParameter("DQMDirName"); if(dbe_) dbe_->setCurrentFolder(dirName_); @@ -116,39 +118,39 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca MonitorElement* ZS_HB1=0, *ZS_seqHB1=0, *ZS_HB2=0, *ZS_seqHB2=0; MonitorElement* ZS_HF1=0, *ZS_seqHF1=0, *ZS_HF2=0, *ZS_seqHF2=0; MonitorElement* ZS_HE1=0, *ZS_seqHE1=0, *ZS_HE2=0, *ZS_seqHE2=0, *ZS_HE3=0, *ZS_seqHE3=0; - MonitorElement* map_depth1 =0, *map_depth2 =0, *map_depth3 =0, *map_depth4 =0; + MonitorElement* map_depth1 =0, *map_depth2 =0, *map_depth3 =0, *map_depth4 =0, *map_depth5 =0, *map_depth6 =0, *map_depth7 =0; // others MonitorElement* Nhf=0; - MonitorElement* emap_depth1 =0, *emap_depth2 =0, *emap_depth3 =0, *emap_depth4 =0; - MonitorElement* occupancy_seqHB1 =0, *occupancy_seqHB2 =0; - MonitorElement* occupancy_seqHE1 =0, *occupancy_seqHE2 =0, *occupancy_seqHE3 =0; + MonitorElement* emap_depth1 =0, *emap_depth2 =0, *emap_depth3 =0, *emap_depth4 =0, *emap_depth5 =0, *emap_depth6 =0, *emap_depth7 =0; + MonitorElement* occupancy_seqHB1 =0, *occupancy_seqHB2 =0, *occupancy_seqHB3 =0, *occupancy_seqHB4 =0, *occupancy_seqHB5 =0, *occupancy_seqHB6 =0, *occupancy_seqHB7 =0; + MonitorElement* occupancy_seqHE1 =0, *occupancy_seqHE2 =0, *occupancy_seqHE3 =0, *occupancy_seqHE4 =0, *occupancy_seqHE5 =0, *occupancy_seqHE6 =0, *occupancy_seqHE7 =0; MonitorElement* occupancy_seqHF1 =0, *occupancy_seqHF2 =0; MonitorElement* occupancy_seqHO =0; - MonitorElement* emean_seqHB1 =0, *emean_seqHB2 =0; - MonitorElement* emean_seqHE1 =0, *emean_seqHE2 =0, *emean_seqHE3 =0; + MonitorElement* emean_seqHB1 =0, *emean_seqHB2 =0, *emean_seqHB3 =0, *emean_seqHB4 =0, *emean_seqHB5 =0, *emean_seqHB6 =0, *emean_seqHB7 =0; + MonitorElement* emean_seqHE1 =0, *emean_seqHE2 =0, *emean_seqHE3 =0, *emean_seqHE4 =0, *emean_seqHE5 =0, *emean_seqHE6 =0, *emean_seqHE7 =0; MonitorElement* emean_seqHF1 =0, *emean_seqHF2 =0; MonitorElement* emean_seqHO =0; - MonitorElement* RMS_seq_HB1 =0, *RMS_seq_HB2 =0; - MonitorElement* RMS_seq_HE1 =0, *RMS_seq_HE2 =0, *RMS_seq_HE3 =0; + MonitorElement* RMS_seq_HB1 =0, *RMS_seq_HB2 =0, *RMS_seq_HB3 =0, *RMS_seq_HB4 =0, *RMS_seq_HB5 =0, *RMS_seq_HB6 =0, *RMS_seq_HB7 =0; + MonitorElement* RMS_seq_HE1 =0, *RMS_seq_HE2 =0, *RMS_seq_HE3 =0, *RMS_seq_HE4 =0, *RMS_seq_HE5 =0, *RMS_seq_HE6 =0, *RMS_seq_HE7 =0; MonitorElement* RMS_seq_HF1 =0, *RMS_seq_HF2 =0; MonitorElement* RMS_seq_HO =0; MonitorElement *occupancy_map_HO =0; - MonitorElement* occupancy_map_HB1 =0, *occupancy_map_HB2 =0; + MonitorElement* occupancy_map_HB1 =0, *occupancy_map_HB2 =0, *occupancy_map_HB3 =0, *occupancy_map_HB4 =0, *occupancy_map_HB5 =0, *occupancy_map_HB6 =0, *occupancy_map_HB7 =0; MonitorElement* occupancy_map_HF1 =0, *occupancy_map_HF2 =0; - MonitorElement* occupancy_map_HE1 =0, *occupancy_map_HE2 =0, *occupancy_map_HE3 =0; + MonitorElement* occupancy_map_HE1 =0, *occupancy_map_HE2 =0, *occupancy_map_HE3 =0, *occupancy_map_HE4 =0, *occupancy_map_HE5 =0, *occupancy_map_HE6 =0, *occupancy_map_HE7 =0; - MonitorElement* emean_vs_ieta_HB1 =0, *emean_vs_ieta_HB2 =0; - MonitorElement* emean_vs_ieta_HE1 =0, *emean_vs_ieta_HE2 =0/*, *emean_vs_ieta_HE3 =0*/; + MonitorElement* emean_vs_ieta_HB1 =0, *emean_vs_ieta_HB2 =0, *emean_vs_ieta_HB3 =0, *emean_vs_ieta_HB4 =0, *emean_vs_ieta_HB5 =0, *emean_vs_ieta_HB6 =0, *emean_vs_ieta_HB7 =0; + MonitorElement* emean_vs_ieta_HE1 =0, *emean_vs_ieta_HE2 =0, *emean_vs_ieta_HE3 =0, *emean_vs_ieta_HE4 =0, *emean_vs_ieta_HE5 =0, *emean_vs_ieta_HE6 =0, *emean_vs_ieta_HE7 =0; //MonitorElement* emean_vs_ieta_HF1 =0, *emean_vs_ieta_HF2 =0; //MonitorElement* emean_vs_ieta_HO =0; - MonitorElement* RMS_vs_ieta_HB1 =0, *RMS_vs_ieta_HB2 =0; - MonitorElement* RMS_vs_ieta_HE1 =0, *RMS_vs_ieta_HE2 =0, *RMS_vs_ieta_HE3 =0; + MonitorElement* RMS_vs_ieta_HB1 =0, *RMS_vs_ieta_HB2 =0, *RMS_vs_ieta_HB3 =0, *RMS_vs_ieta_HB4 =0, *RMS_vs_ieta_HB5 =0, *RMS_vs_ieta_HB6 =0, *RMS_vs_ieta_HB7 =0; + MonitorElement* RMS_vs_ieta_HE1 =0, *RMS_vs_ieta_HE2 =0, *RMS_vs_ieta_HE3 =0, *RMS_vs_ieta_HE4 =0, *RMS_vs_ieta_HE5 =0, *RMS_vs_ieta_HE6 =0, *RMS_vs_ieta_HE7 =0; MonitorElement* RMS_vs_ieta_HF1 =0, *RMS_vs_ieta_HF2 =0; MonitorElement* RMS_vs_ieta_HO =0; - MonitorElement* occupancy_vs_ieta_HB1 =0, *occupancy_vs_ieta_HB2 =0; - MonitorElement* occupancy_vs_ieta_HE1 =0, *occupancy_vs_ieta_HE2 =0, *occupancy_vs_ieta_HE3 =0; + MonitorElement* occupancy_vs_ieta_HB1 =0, *occupancy_vs_ieta_HB2 =0, *occupancy_vs_ieta_HB3 =0, *occupancy_vs_ieta_HB4 =0, *occupancy_vs_ieta_HB5 =0, *occupancy_vs_ieta_HB6 =0, *occupancy_vs_ieta_HB7 =0; + MonitorElement* occupancy_vs_ieta_HE1 =0, *occupancy_vs_ieta_HE2 =0, *occupancy_vs_ieta_HE3 =0, *occupancy_vs_ieta_HE4 =0, *occupancy_vs_ieta_HE5 =0, *occupancy_vs_ieta_HE6 =0, *occupancy_vs_ieta_HE7 =0; MonitorElement* occupancy_vs_ieta_HF1 =0, *occupancy_vs_ieta_HF2 =0; MonitorElement* occupancy_vs_ieta_HO =0; @@ -189,60 +191,137 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth2") ==0 ){ emap_depth2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth3") ==0 ){ emap_depth3= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth4") ==0 ){ emap_depth4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth5") ==0 ){ emap_depth5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth6") ==0 ){ emap_depth6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emap_depth7") ==0 ){ emap_depth7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB1") ==0 ){ occupancy_seqHB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB2") ==0 ){ occupancy_seqHB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB3") ==0 ){ occupancy_seqHB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB4") ==0 ){ occupancy_seqHB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB5") ==0 ){ occupancy_seqHB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB6") ==0 ){ occupancy_seqHB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HB7") ==0 ){ occupancy_seqHB7= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE1") ==0 ){ occupancy_seqHE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE2") ==0 ){ occupancy_seqHE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE3") ==0 ){ occupancy_seqHE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE4") ==0 ){ occupancy_seqHE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE5") ==0 ){ occupancy_seqHE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE6") ==0 ){ occupancy_seqHE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HE7") ==0 ){ occupancy_seqHE7= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HF1") ==0 ){ occupancy_seqHF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HF2") ==0 ){ occupancy_seqHF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occ_sequential1D_HO") ==0 ){ occupancy_seqHO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB1") ==0 ){ emean_seqHB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB2") ==0 ){ emean_seqHB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB3") ==0 ){ emean_seqHB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB4") ==0 ){ emean_seqHB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB5") ==0 ){ emean_seqHB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB6") ==0 ){ emean_seqHB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HB7") ==0 ){ emean_seqHB7= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE1") ==0 ){ emean_seqHE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE2") ==0 ){ emean_seqHE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE3") ==0 ){ emean_seqHE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE4") ==0 ){ emean_seqHE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE5") ==0 ){ emean_seqHE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE6") ==0 ){ emean_seqHE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HE7") ==0 ){ emean_seqHE7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HF1") ==0 ){ emean_seqHF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HF2") ==0 ){ emean_seqHF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_seq_HO") ==0 ){ emean_seqHO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB1") ==0 ){ RMS_seq_HB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB2") ==0 ){ RMS_seq_HB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB3") ==0 ){ RMS_seq_HB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB4") ==0 ){ RMS_seq_HB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB5") ==0 ){ RMS_seq_HB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB6") ==0 ){ RMS_seq_HB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HB7") ==0 ){ RMS_seq_HB7= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE1") ==0 ){ RMS_seq_HE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE2") ==0 ){ RMS_seq_HE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE3") ==0 ){ RMS_seq_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE4") ==0 ){ RMS_seq_HE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE5") ==0 ){ RMS_seq_HE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE6") ==0 ){ RMS_seq_HE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HE7") ==0 ){ RMS_seq_HE7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HF1") ==0 ){ RMS_seq_HF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HF2") ==0 ){ RMS_seq_HF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_seq_HO") ==0 ){ RMS_seq_HO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB1") ==0 ){ occupancy_map_HB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB2") ==0 ){ occupancy_map_HB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB3") ==0 ){ occupancy_map_HB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB4") ==0 ){ occupancy_map_HB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB5") ==0 ){ occupancy_map_HB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB6") ==0 ){ occupancy_map_HB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HB7") ==0 ){ occupancy_map_HB7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE1") ==0 ){ occupancy_map_HE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE2") ==0 ){ occupancy_map_HE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE3") ==0 ){ occupancy_map_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE4") ==0 ){ occupancy_map_HE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE5") ==0 ){ occupancy_map_HE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE6") ==0 ){ occupancy_map_HE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HE7") ==0 ){ occupancy_map_HE7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HF1") ==0 ){ occupancy_map_HF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HF2") ==0 ){ occupancy_map_HF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_map_HO") ==0 ){ occupancy_map_HO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB1") ==0 ){ emean_vs_ieta_HB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB2") ==0 ){ emean_vs_ieta_HB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB3") ==0 ){ emean_vs_ieta_HB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB4") ==0 ){ emean_vs_ieta_HB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB5") ==0 ){ emean_vs_ieta_HB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB6") ==0 ){ emean_vs_ieta_HB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HB7") ==0 ){ emean_vs_ieta_HB7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE1") ==0 ){ emean_vs_ieta_HE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE2") ==0 ){ emean_vs_ieta_HE2= hcalMEs[ih]; } - //else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE3") ==0 ){ emean_vs_ieta_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE3") ==0 ){ emean_vs_ieta_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE4") ==0 ){ emean_vs_ieta_HE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE5") ==0 ){ emean_vs_ieta_HE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE6") ==0 ){ emean_vs_ieta_HE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HE7") ==0 ){ emean_vs_ieta_HE7= hcalMEs[ih]; } + //else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HF1") ==0 ){ emean_vs_ieta_HF1= hcalMEs[ih]; } //else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HF2") ==0 ){ emean_vs_ieta_HF2= hcalMEs[ih]; } //else if( strcmp(hcalMEs[ih]->getName().c_str(), "emean_vs_ieta_HO") ==0 ){ emean_vs_ieta_HO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB1") ==0 ){ RMS_vs_ieta_HB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB2") ==0 ){ RMS_vs_ieta_HB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB3") ==0 ){ RMS_vs_ieta_HB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB4") ==0 ){ RMS_vs_ieta_HB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB5") ==0 ){ RMS_vs_ieta_HB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB6") ==0 ){ RMS_vs_ieta_HB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HB7") ==0 ){ RMS_vs_ieta_HB7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE1") ==0 ){ RMS_vs_ieta_HE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE2") ==0 ){ RMS_vs_ieta_HE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE3") ==0 ){ RMS_vs_ieta_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE4") ==0 ){ RMS_vs_ieta_HE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE5") ==0 ){ RMS_vs_ieta_HE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE6") ==0 ){ RMS_vs_ieta_HE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HE7") ==0 ){ RMS_vs_ieta_HE7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HF1") ==0 ){ RMS_vs_ieta_HF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HF2") ==0 ){ RMS_vs_ieta_HF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "RMS_vs_ieta_HO") ==0 ){ RMS_vs_ieta_HO= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB1") ==0 ){ occupancy_vs_ieta_HB1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB2") ==0 ){ occupancy_vs_ieta_HB2= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB3") ==0 ){ occupancy_vs_ieta_HB3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB4") ==0 ){ occupancy_vs_ieta_HB4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB5") ==0 ){ occupancy_vs_ieta_HB5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB6") ==0 ){ occupancy_vs_ieta_HB6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HB7") ==0 ){ occupancy_vs_ieta_HB7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE1") ==0 ){ occupancy_vs_ieta_HE1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE2") ==0 ){ occupancy_vs_ieta_HE2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE3") ==0 ){ occupancy_vs_ieta_HE3= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE4") ==0 ){ occupancy_vs_ieta_HE4= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE5") ==0 ){ occupancy_vs_ieta_HE5= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE6") ==0 ){ occupancy_vs_ieta_HE6= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HE7") ==0 ){ occupancy_vs_ieta_HE7= hcalMEs[ih]; } + else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HF1") ==0 ){ occupancy_vs_ieta_HF1= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HF2") ==0 ){ occupancy_vs_ieta_HF2= hcalMEs[ih]; } else if( strcmp(hcalMEs[ih]->getName().c_str(), "occupancy_vs_ieta_HO") ==0 ){ occupancy_vs_ieta_HO= hcalMEs[ih]; } @@ -324,8 +403,12 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca ZS_HF2->Fill(e); ZS_seqHF2->Fill(double(index),e); } + + + unsigned int n_depth = 4; + if (doslhc_){n_depth = 7;} - for (unsigned int i3 = 0; i3 < 4; i3++) { // depth + for (unsigned int i3 = 0; i3 < n_depth; i3++) { // depth double emin = 100000.; for (unsigned int i4 = 0; i4 < 4; i4++) { // subdet /* @@ -352,6 +435,15 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca map_depth3->Fill(double(ieta),double(i2),emin); if( i3 == 3 && emin < 10000.) map_depth4->Fill(double(ieta),double(i2),emin); + if (doslhc_){ + if( i3 == 4 && emin < 10000.) + map_depth5->Fill(double(ieta),double(i2),emin); + if( i3 == 5 && emin < 10000.) + map_depth6->Fill(double(ieta),double(i2),emin); + if( i3 == 6 && emin < 10000.) + map_depth7->Fill(double(ieta),double(i2),emin); + } + } } } @@ -369,7 +461,7 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca float fev = float (nevtot); // std::cout << "*** nevtot " << nevtot << std::endl; - float sumphi_hb1, sumphi_hb2, sumphi_he1, sumphi_he2, sumphi_he3, + float sumphi_hb1, sumphi_hb2, sumphi_hb3, sumphi_hb4, sumphi_hb5, sumphi_hb6, sumphi_hb7, sumphi_he1, sumphi_he2, sumphi_he3, sumphi_he4, sumphi_he5, sumphi_he6, sumphi_he7, sumphi_ho, sumphi_hf1, sumphi_hf2; /* if(nx != 82 || ny != 72) @@ -390,6 +482,15 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca emap_depth3->setBinContent(i,j,cnorm); cnorm = emap_depth4->getBinContent(i,j) / fev; emap_depth4->setBinContent(i,j,cnorm); + + if (doslhc_){ + cnorm = emap_depth5->getBinContent(i,j) / fev; + emap_depth5->setBinContent(i,j,cnorm); + cnorm = emap_depth6->getBinContent(i,j) / fev; + emap_depth6->setBinContent(i,j,cnorm); + cnorm = emap_depth7->getBinContent(i,j) / fev; + emap_depth7->setBinContent(i,j,cnorm); + } } } @@ -397,9 +498,18 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca for (int i = 1; i <= nx; i++) { sumphi_hb1 = 0.; sumphi_hb2 = 0.; + sumphi_hb3 = 0.; + sumphi_hb4 = 0.; + sumphi_hb5 = 0.; + sumphi_hb6 = 0.; + sumphi_hb7 = 0.; sumphi_he1 = 0.; sumphi_he2 = 0.; sumphi_he3 = 0.; + sumphi_he4 = 0.; + sumphi_he5 = 0.; + sumphi_he6 = 0.; + sumphi_he7 = 0.; sumphi_ho = 0.; sumphi_hf1 = 0.; sumphi_hf2 = 0.; @@ -414,16 +524,40 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca cnorm = occupancy_map_HB2->getBinContent(i,j) / fev; occupancy_map_HB2->setBinContent(i,j,cnorm); + + if (doslhc_){ + cnorm = occupancy_map_HB3->getBinContent(i,j) / fev; + occupancy_map_HB3->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HB4->getBinContent(i,j) / fev; + occupancy_map_HB4->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HB5->getBinContent(i,j) / fev; + occupancy_map_HB5->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HB6->getBinContent(i,j) / fev; + occupancy_map_HB6->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HB7->getBinContent(i,j) / fev; + occupancy_map_HB7->setBinContent(i,j,cnorm); + } cnorm = occupancy_map_HE1->getBinContent(i,j) / fev; occupancy_map_HE1->setBinContent(i,j,cnorm); cnorm = occupancy_map_HE2->getBinContent(i,j) / fev; occupancy_map_HE2->setBinContent(i,j,cnorm); + + cnorm = occupancy_map_HE3->getBinContent(i,j) / fev; + occupancy_map_HE3->setBinContent(i,j,cnorm); - cnorm = occupancy_map_HE3->getBinContent(i,j) / fev; - occupancy_map_HE3->setBinContent(i,j,cnorm); - + if (doslhc_){ + cnorm = occupancy_map_HE4->getBinContent(i,j) / fev; + occupancy_map_HE4->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HE5->getBinContent(i,j) / fev; + occupancy_map_HE5->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HE6->getBinContent(i,j) / fev; + occupancy_map_HE6->setBinContent(i,j,cnorm); + cnorm = occupancy_map_HE7->getBinContent(i,j) / fev; + occupancy_map_HE7->setBinContent(i,j,cnorm); + } + cnorm = occupancy_map_HO->getBinContent(i,j) / fev; occupancy_map_HO->setBinContent(i,j,cnorm); @@ -435,9 +569,26 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca sumphi_hb1 += occupancy_map_HB1->getBinContent(i,j); sumphi_hb2 += occupancy_map_HB2->getBinContent(i,j); + + if (doslhc_){ + sumphi_hb3 += occupancy_map_HB3->getBinContent(i,j); + sumphi_hb4 += occupancy_map_HB4->getBinContent(i,j); + sumphi_hb5 += occupancy_map_HB5->getBinContent(i,j); + sumphi_hb6 += occupancy_map_HB6->getBinContent(i,j); + sumphi_hb7 += occupancy_map_HB7->getBinContent(i,j); + } + sumphi_he1 += occupancy_map_HE1->getBinContent(i,j); sumphi_he2 += occupancy_map_HE2->getBinContent(i,j); sumphi_he3 += occupancy_map_HE3->getBinContent(i,j); + + if (doslhc_){ + sumphi_he4 += occupancy_map_HE4->getBinContent(i,j); + sumphi_he5 += occupancy_map_HE5->getBinContent(i,j); + sumphi_he6 += occupancy_map_HE6->getBinContent(i,j); + sumphi_he7 += occupancy_map_HE7->getBinContent(i,j); + } + sumphi_ho += occupancy_map_HO->getBinContent(i,j); sumphi_hf1 += occupancy_map_HF1->getBinContent(i,j); sumphi_hf2 += occupancy_map_HF2->getBinContent(i,j); @@ -446,9 +597,20 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca if(useAllHistos){ occupancy_seqHB1->Fill(double(index),cnorm); occupancy_seqHB2->Fill(double(index),cnorm); + occupancy_seqHB3->Fill(double(index),cnorm); + occupancy_seqHB4->Fill(double(index),cnorm); + occupancy_seqHB5->Fill(double(index),cnorm); + occupancy_seqHB6->Fill(double(index),cnorm); + occupancy_seqHB7->Fill(double(index),cnorm); + occupancy_seqHE1->Fill(double(index),cnorm); occupancy_seqHE2->Fill(double(index),cnorm); occupancy_seqHE3->Fill(double(index),cnorm); + occupancy_seqHE4->Fill(double(index),cnorm); + occupancy_seqHE5->Fill(double(index),cnorm); + occupancy_seqHE6->Fill(double(index),cnorm); + occupancy_seqHE7->Fill(double(index),cnorm); + occupancy_seqHO->Fill(double(index),cnorm); occupancy_seqHF1->Fill(double(index),cnorm); occupancy_seqHF2->Fill(double(index),cnorm); @@ -478,12 +640,38 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca occupancy_vs_ieta_HB1->Fill(float(ieta), cnorm); cnorm = sumphi_hb2 / phi_factor; occupancy_vs_ieta_HB2->Fill(float(ieta), cnorm); + + if (doslhc_){ + cnorm = sumphi_hb3 / phi_factor; + occupancy_vs_ieta_HB3->Fill(float(ieta), cnorm); + cnorm = sumphi_hb4 / phi_factor; + occupancy_vs_ieta_HB4->Fill(float(ieta), cnorm); + cnorm = sumphi_hb5 / phi_factor; + occupancy_vs_ieta_HB5->Fill(float(ieta), cnorm); + cnorm = sumphi_hb6 / phi_factor; + occupancy_vs_ieta_HB6->Fill(float(ieta), cnorm); + cnorm = sumphi_hb7 / phi_factor; + occupancy_vs_ieta_HB7->Fill(float(ieta), cnorm); + } + cnorm = sumphi_he1 / phi_factor; occupancy_vs_ieta_HE1->Fill(float(ieta), cnorm); cnorm = sumphi_he2 / phi_factor; occupancy_vs_ieta_HE2->Fill(float(ieta), cnorm); cnorm = sumphi_he3 / phi_factor; occupancy_vs_ieta_HE3->Fill(float(ieta), cnorm); + + if (doslhc_){ + cnorm = sumphi_he4 / phi_factor; + occupancy_vs_ieta_HE4->Fill(float(ieta), cnorm); + cnorm = sumphi_he5 / phi_factor; + occupancy_vs_ieta_HE5->Fill(float(ieta), cnorm); + cnorm = sumphi_he6 / phi_factor; + occupancy_vs_ieta_HE6->Fill(float(ieta), cnorm); + cnorm = sumphi_he7 / phi_factor; + occupancy_vs_ieta_HE7->Fill(float(ieta), cnorm); + } + cnorm = sumphi_ho / phi_factor; occupancy_vs_ieta_HO->Fill(float(ieta), cnorm); cnorm = sumphi_hf1 / phi_factor; @@ -497,12 +685,35 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca RMS_vs_ieta_HB1->Fill(ieta,cnorm); cnorm = emean_vs_ieta_HB2->getBinError(i); RMS_vs_ieta_HB2->Fill(ieta,cnorm); + + cnorm = emean_vs_ieta_HB3->getBinError(i); + RMS_vs_ieta_HB3->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HB4->getBinError(i); + RMS_vs_ieta_HB4->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HB5->getBinError(i); + RMS_vs_ieta_HB5->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HB6->getBinError(i); + RMS_vs_ieta_HB6->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HB7->getBinError(i); + RMS_vs_ieta_HB7->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HE1->getBinError(i); RMS_vs_ieta_HE1->Fill(ieta,cnorm); cnorm = emean_vs_ieta_HE2->getBinError(i); RMS_vs_ieta_HE2->Fill(ieta,cnorm); - cnorm = emean_vs_ieta_HE1->getBinError(i); + cnorm = emean_vs_ieta_HE3->getBinError(i); RMS_vs_ieta_HE3->Fill(ieta,cnorm); + + cnorm = emean_vs_ieta_HE4->getBinError(i); + RMS_vs_ieta_HE4->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HE5->getBinError(i); + RMS_vs_ieta_HE5->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HE6->getBinError(i); + RMS_vs_ieta_HE6->Fill(ieta,cnorm); + cnorm = emean_vs_ieta_HE7->getBinError(i); + RMS_vs_ieta_HE7->Fill(ieta,cnorm); + + cnorm = emean_vs_ieta_HB1->getBinError(i); RMS_vs_ieta_HO->Fill(ieta,cnorm); cnorm = emean_vs_ieta_HB1->getBinError(i); @@ -521,6 +732,18 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca RMS_seq_HB1->setBinContent(ibin, cnorm); cnorm = emean_seqHB2->getBinError(ibin); RMS_seq_HB2->setBinContent(ibin, cnorm); + cnorm = emean_seqHB3->getBinError(ibin); + RMS_seq_HB3->setBinContent(ibin, cnorm); + cnorm = emean_seqHB4->getBinError(ibin); + RMS_seq_HB4->setBinContent(ibin, cnorm); + cnorm = emean_seqHB5->getBinError(ibin); + RMS_seq_HB5->setBinContent(ibin, cnorm); + cnorm = emean_seqHB6->getBinError(ibin); + RMS_seq_HB6->setBinContent(ibin, cnorm); + cnorm = emean_seqHB7->getBinError(ibin); + RMS_seq_HB7->setBinContent(ibin, cnorm); + + cnorm = emean_seqHO->getBinError(ibin); RMS_seq_HO->setBinContent(ibin, cnorm); } @@ -532,6 +755,16 @@ int HcalRecHitsClient::HcalRecHitsEndjob(const std::vector &hca RMS_seq_HE2->setBinContent(ibin, cnorm); cnorm = emean_seqHE3->getBinError(ibin); RMS_seq_HE3->setBinContent(ibin, cnorm); + cnorm = emean_seqHE4->getBinError(ibin); + RMS_seq_HE4->setBinContent(ibin, cnorm); + cnorm = emean_seqHE5->getBinError(ibin); + RMS_seq_HE5->setBinContent(ibin, cnorm); + cnorm = emean_seqHE6->getBinError(ibin); + RMS_seq_HE6->setBinContent(ibin, cnorm); + cnorm = emean_seqHE7->getBinError(ibin); + RMS_seq_HE7->setBinContent(ibin, cnorm); + + } nx = emean_seqHF1->getNbinsX(); for(int ibin = 1; ibin <= nx; ibin++ ){ diff --git a/Validation/HcalRecHits/src/HcalRecHitsValidation.cc b/Validation/HcalRecHits/src/HcalRecHitsValidation.cc index 439f9ee99591f..d366be166ab42 100644 --- a/Validation/HcalRecHits/src/HcalRecHitsValidation.cc +++ b/Validation/HcalRecHits/src/HcalRecHitsValidation.cc @@ -28,6 +28,9 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { famos_ = conf.getUntrackedParameter("Famos", false); useAllHistos_ = conf.getUntrackedParameter("useAllHistos", false); + // false for regular relval and true for SLHC relval + doSLHC_ = conf.getUntrackedParameter("doSLHC", false); + //Collections theHBHERecHitCollectionLabel = conf.getUntrackedParameter("HBHERecHitCollectionLabel"); theHFRecHitCollectionLabel = conf.getUntrackedParameter("HFRecHitCollectionLabel"); @@ -157,6 +160,16 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { sprintf (histo, "emap_depth4" ); emap_depth4 = dbe_->book2D(histo, histo, 84, -42., 42., 72, 0., 72.); + if (doSLHC_){ + sprintf (histo, "emap_depth5" ); + emap_depth5 = dbe_->book2D(histo, histo, 84, -42., 42., 72, 0., 72.); + sprintf (histo, "emap_depth6" ); + emap_depth6 = dbe_->book2D(histo, histo, 84, -42., 42., 72, 0., 72.); + sprintf (histo, "emap_depth7" ); + emap_depth7 = dbe_->book2D(histo, histo, 84, -42., 42., 72, 0., 72.); + } + + if (useAllHistos_){ if (ecalselector_ == "yes") { @@ -170,12 +183,38 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { emean_vs_ieta_HB1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); sprintf (histo, "emean_vs_ieta_HB2" ); emean_vs_ieta_HB2 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + + if (doSLHC_){ + sprintf (histo, "emean_vs_ieta_HB3" ); + emean_vs_ieta_HB3 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + sprintf (histo, "emean_vs_ieta_HB4" ); + emean_vs_ieta_HB4 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + sprintf (histo, "emean_vs_ieta_HB5" ); + emean_vs_ieta_HB5 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + sprintf (histo, "emean_vs_ieta_HB6" ); + emean_vs_ieta_HB6 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + sprintf (histo, "emean_vs_ieta_HB7" ); + emean_vs_ieta_HB7 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); + } + sprintf (histo, "emean_vs_ieta_HE1" ); emean_vs_ieta_HE1 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10. ,2000., "s" ); sprintf (histo, "emean_vs_ieta_HE2" ); emean_vs_ieta_HE2 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s"); sprintf (histo, "emean_vs_ieta_HE3" ); emean_vs_ieta_HE3 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); + + if (doSLHC_){ + sprintf (histo, "emean_vs_ieta_HE4" ); + emean_vs_ieta_HE4 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_vs_ieta_HE5" ); + emean_vs_ieta_HE5 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_vs_ieta_HE6" ); + emean_vs_ieta_HE6 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_vs_ieta_HE7" ); + emean_vs_ieta_HE7 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); + } + sprintf (histo, "emean_vs_ieta_HO" ); emean_vs_ieta_HO = dbe_->bookProfile(histo, histo, 82, -41., 41., 2010, -10., 2000., "s" ); sprintf (histo, "emean_vs_ieta_HF1" ); @@ -188,12 +227,32 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { RMS_vs_ieta_HB1 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "RMS_vs_ieta_HB2" ); RMS_vs_ieta_HB2 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HB3" ); + RMS_vs_ieta_HB3 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HB4" ); + RMS_vs_ieta_HB4 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HB5" ); + RMS_vs_ieta_HB5 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HB6" ); + RMS_vs_ieta_HB6 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HB7" ); + RMS_vs_ieta_HB7 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HE1" ); RMS_vs_ieta_HE1 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "RMS_vs_ieta_HE2" ); RMS_vs_ieta_HE2 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "RMS_vs_ieta_HE3" ); RMS_vs_ieta_HE3 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HE4" ); + RMS_vs_ieta_HE4 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HE5" ); + RMS_vs_ieta_HE5 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HE6" ); + RMS_vs_ieta_HE6 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HE7" ); + RMS_vs_ieta_HE7 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "RMS_vs_ieta_HO" ); RMS_vs_ieta_HO = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "RMS_vs_ieta_HF1" ); @@ -206,13 +265,34 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { emean_seqHB1 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); sprintf (histo, "emean_seq_HB2" ); emean_seqHB2 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); - sprintf (histo, "emean_seq_HE1" ); + sprintf (histo, "emean_seq_HB3" ); + emean_seqHB3 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HB4" ); + emean_seqHB4 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HB5" ); + emean_seqHB5 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HB6" ); + emean_seqHB6 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HB7" ); + emean_seqHB7 = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); + + sprintf (histo, "emean_seq_HE1" ); emean_seqHE1 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); sprintf (histo, "emean_seq_HE2" ); emean_seqHE2 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); sprintf (histo, "emean_seq_HE3" ); emean_seqHE3 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); - sprintf (histo, "emean_seq_HO" ); + sprintf (histo, "emean_seq_HE4" ); + emean_seqHE4 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HE5" ); + emean_seqHE5 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HE6" ); + emean_seqHE6 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); + sprintf (histo, "emean_seq_HE7" ); + emean_seqHE7 = dbe_->bookProfile(histo, histo, 4400, -2200., 2200., 2010, -10., 2000., "s" ); + + + sprintf (histo, "emean_seq_HO" ); emean_seqHO = dbe_->bookProfile(histo, histo, 2400, -1200., 1200., 2010, -10., 2000., "s" ); sprintf (histo, "emean_seq_HF1" ); emean_seqHF1 = dbe_->bookProfile(histo, histo, 6000, -3000., 3000., 2010, -10., 2000., "s" ); @@ -223,12 +303,33 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { RMS_seq_HB1 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); sprintf (histo, "RMS_seq_HB2" ); RMS_seq_HB2 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + sprintf (histo, "RMS_seq_HB3" ); + RMS_seq_HB3 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + sprintf (histo, "RMS_seq_HB4" ); + RMS_seq_HB4 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + sprintf (histo, "RMS_seq_HB5" ); + RMS_seq_HB5 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + sprintf (histo, "RMS_seq_HB6" ); + RMS_seq_HB6 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + sprintf (histo, "RMS_seq_HB7" ); + RMS_seq_HB7 = dbe_->book1D(histo, histo, 2400, -1200., 1200.); + + sprintf (histo, "RMS_seq_HE1" ); RMS_seq_HE1 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); sprintf (histo, "RMS_seq_HE2" ); RMS_seq_HE2 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); sprintf (histo, "RMS_seq_HE3" ); RMS_seq_HE3 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); + sprintf (histo, "RMS_seq_HE4" ); + RMS_seq_HE4 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); + sprintf (histo, "RMS_seq_HE5" ); + RMS_seq_HE5 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); + sprintf (histo, "RMS_seq_HE6" ); + RMS_seq_HE6 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); + sprintf (histo, "RMS_seq_HE7" ); + RMS_seq_HE7 = dbe_->book1D(histo, histo, 4400, -2200., 2200.); + sprintf (histo, "RMS_seq_HO" ); RMS_seq_HO = dbe_->book1D(histo, histo, 2400, -1200., 1200.); sprintf (histo, "RMS_seq_HF1" ); @@ -243,12 +344,38 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { occupancy_map_HB1 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); sprintf (histo, "occupancy_map_HB2" ); occupancy_map_HB2 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + + if (doSLHC_){ + sprintf (histo, "occupancy_map_HB3" ); + occupancy_map_HB3 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HB4" ); + occupancy_map_HB4 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HB5" ); + occupancy_map_HB5 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HB6" ); + occupancy_map_HB6 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HB7" ); + occupancy_map_HB7 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + } + sprintf (histo, "occupancy_map_HE1" ); occupancy_map_HE1 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); sprintf (histo, "occupancy_map_HE2" ); occupancy_map_HE2 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); sprintf (histo, "occupancy_map_HE3" ); occupancy_map_HE3 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + + if (doSLHC_){ + sprintf (histo, "occupancy_map_HE4" ); + occupancy_map_HE4 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HE5" ); + occupancy_map_HE5 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HE6" ); + occupancy_map_HE6 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + sprintf (histo, "occupancy_map_HE7" ); + occupancy_map_HE7 = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); + } + sprintf (histo, "occupancy_map_HO" ); occupancy_map_HO = dbe_->book2D(histo, histo, 82, -41., 41., 72, 0., 72.); sprintf (histo, "occupancy_map_HF1" ); @@ -261,12 +388,39 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { occupancy_vs_ieta_HB1 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "occupancy_vs_ieta_HB2" ); occupancy_vs_ieta_HB2 = dbe_->book1D(histo, histo, 82, -41., 41.); + + if (doSLHC_){ + sprintf (histo, "occupancy_vs_ieta_HB3" ); + occupancy_vs_ieta_HB3 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HB4" ); + occupancy_vs_ieta_HB4 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HB5" ); + occupancy_vs_ieta_HB5 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HB6" ); + occupancy_vs_ieta_HB6 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HB7" ); + occupancy_vs_ieta_HB7 = dbe_->book1D(histo, histo, 82, -41., 41.); + } + + sprintf (histo, "occupancy_vs_ieta_HE1" ); occupancy_vs_ieta_HE1 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "occupancy_vs_ieta_HE2" ); occupancy_vs_ieta_HE2 = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "occupancy_vs_ieta_HE3" ); occupancy_vs_ieta_HE3 = dbe_->book1D(histo, histo, 82, -41., 41.); + + if (doSLHC_){ + sprintf (histo, "occupancy_vs_ieta_HE4" ); + occupancy_vs_ieta_HE4 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HE5" ); + occupancy_vs_ieta_HE5 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HE6" ); + occupancy_vs_ieta_HE6 = dbe_->book1D(histo, histo, 82, -41., 41.); + sprintf (histo, "occupancy_vs_ieta_HE7" ); + occupancy_vs_ieta_HE7 = dbe_->book1D(histo, histo, 82, -41., 41.); + } + sprintf (histo, "occupancy_vs_ieta_HO" ); occupancy_vs_ieta_HO = dbe_->book1D(histo, histo, 82, -41., 41.); sprintf (histo, "occupancy_vs_ieta_HF1" ); @@ -338,6 +492,15 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { sprintf (histo, "map_econe_depth4" ); map_econe_depth4 = dbe_->book2D(histo, histo, 520, -5.2, 5.2, 72, -3.1415926536, 3.1415926536); + sprintf (histo, "map_econe_depth5" ); + map_econe_depth5 = + dbe_->book2D(histo, histo, 520, -5.2, 5.2, 72, -3.1415926536, 3.1415926536); + sprintf (histo, "map_econe_depth6" ); + map_econe_depth6 = + dbe_->book2D(histo, histo, 520, -5.2, 5.2, 72, -3.1415926536, 3.1415926536); + sprintf (histo, "map_econe_depth7" ); + map_econe_depth7 = + dbe_->book2D(histo, histo, 520, -5.2, 5.2, 72, -3.1415926536, 3.1415926536); } } // end-of (subdet_ =! 6) @@ -370,7 +533,17 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { meEnConeEtaProfile_depth3 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_depth4"); - meEnConeEtaProfile_depth4 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); + meEnConeEtaProfile_depth4 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); + + sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_depth5"); + meEnConeEtaProfile_depth5 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); + + sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_depth6"); + meEnConeEtaProfile_depth6 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); + + sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_depth7"); + meEnConeEtaProfile_depth7 = dbe_->bookProfile(histo, histo, 82, -41., 41., 2100, -100., 2000.); + } @@ -475,6 +648,18 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth2" ) ; meTE_HB2 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth3" ) ; + meTE_HB3 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth4" ) ; + meTE_HB4 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth5" ) ; + meTE_HB5 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth6" ) ; + meTE_HB6 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB_depth7" ) ; + meTE_HB7 = dbe_->book2D(histo, histo, 3000, -5., 2995., 70, -48., 92.); + if(imc != 0) { sprintf (histo, "HcalRecHitTask_energy_rechits_vs_simhits_HB"); @@ -551,6 +736,18 @@ HcalRecHitsValidation::HcalRecHitsValidation(edm::ParameterSet const& conf) { sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth2" ) ; meTE_HE2 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth3" ) ; + meTE_HE3 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth4" ) ; + meTE_HE4 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth5" ) ; + meTE_HE5 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth6" ) ; + meTE_HE6 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE_depth7" ) ; + meTE_HE7 = dbe_->book2D(histo, histo, 1000, -5., 995., 70, -48., 92.); + if(imc != 0) { sprintf (histo, "HcalRecHitTask_energy_rechits_vs_simhits_HE"); @@ -736,6 +933,10 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& double ehcal_coneMC_2 = 0.; double ehcal_coneMC_3 = 0.; double ehcal_coneMC_4 = 0.; + double ehcal_coneMC_5 = 0.; + double ehcal_coneMC_6 = 0.; + double ehcal_coneMC_7 = 0.; + // Cone size for serach of the hottest HCAL cell around MC double searchR = 1.0; @@ -896,9 +1097,18 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& int nhb1 = 0; int nhb2 = 0; + int nhb3 = 0; + int nhb4 = 0; + int nhb5 = 0; + int nhb6 = 0; + int nhb7 = 0; int nhe1 = 0; int nhe2 = 0; int nhe3 = 0; + int nhe4 = 0; + int nhe5 = 0; + int nhe6 = 0; + int nhe7 = 0; int nho = 0; int nhf1 = 0; int nhf2 = 0; @@ -927,9 +1137,20 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& if( sub == 1 && depth == 1) nhb1++; if( sub == 1 && depth == 2) nhb2++; + if( sub == 1 && depth == 3) nhb3++; + if( sub == 1 && depth == 4) nhb4++; + if( sub == 1 && depth == 5) nhb5++; + if( sub == 1 && depth == 6) nhb6++; + if( sub == 1 && depth == 7) nhb7++; + if( sub == 2 && depth == 1) nhe1++; if( sub == 2 && depth == 2) nhe2++; if( sub == 2 && depth == 3) nhe3++; + if( sub == 2 && depth == 4) nhe4++; + if( sub == 2 && depth == 5) nhe5++; + if( sub == 2 && depth == 6) nhe6++; + if( sub == 2 && depth == 7) nhe7++; + if( sub == 3 && depth == 4) nho++; if( sub == 4 && depth == 1) nhf1++; if( sub == 4 && depth == 2) nhf2++; @@ -977,7 +1198,13 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& if( depth == 3) emap_depth3->Fill(double(ieta), double(iphi), en); if( depth == 4) emap_depth4->Fill(double(ieta), double(iphi), en); - + + if (doSLHC_){ + if( depth == 5) emap_depth5->Fill(double(ieta), double(iphi), en); + if( depth == 6) emap_depth6->Fill(double(ieta), double(iphi), en); + if( depth == 7) emap_depth7->Fill(double(ieta), double(iphi), en); + } + if (depth == 1 && sub == 1 ) { emean_vs_ieta_HB1->Fill(double(ieta), en); occupancy_map_HB1->Fill(double(ieta), double(iphi)); @@ -992,6 +1219,45 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& emean_seqHB2->Fill(double(index), en); } } + + if (doSLHC_){ + if (depth == 3 && sub == 1) { + emean_vs_ieta_HB3->Fill(double(ieta), en); + occupancy_map_HB3->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHB3->Fill(double(index), en); + } + } + if (depth == 4 && sub == 1) { + emean_vs_ieta_HB4->Fill(double(ieta), en); + occupancy_map_HB4->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHB4->Fill(double(index), en); + } + } + if (depth == 5 && sub == 1) { + emean_vs_ieta_HB5->Fill(double(ieta), en); + occupancy_map_HB5->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHB5->Fill(double(index), en); + } + } + if (depth == 6 && sub == 1) { + emean_vs_ieta_HB6->Fill(double(ieta), en); + occupancy_map_HB6->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHB6->Fill(double(index), en); + } + } + if (depth == 7 && sub == 1) { + emean_vs_ieta_HB7->Fill(double(ieta), en); + occupancy_map_HB7->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHB7->Fill(double(index), en); + } + } + } + if (depth == 1 && sub == 2) { emean_vs_ieta_HE1->Fill(double(ieta), en); occupancy_map_HE1->Fill(double(ieta), double(iphi)); @@ -1013,7 +1279,37 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& emean_seqHE3->Fill(double(index), en); } } - if (depth == 4 ) { + if (doSLHC_){ + if (depth == 4 && sub == 2) { + emean_vs_ieta_HE4->Fill(double(ieta), en); + occupancy_map_HE4->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHE4->Fill(double(index), en); + } + } + if (depth == 5 && sub == 2) { + emean_vs_ieta_HE5->Fill(double(ieta), en); + occupancy_map_HE5->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHE5->Fill(double(index), en); + } + } + if (depth == 6 && sub == 2) { + emean_vs_ieta_HE6->Fill(double(ieta), en); + occupancy_map_HE6->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHE6->Fill(double(index), en); + } + } + if (depth == 7 && sub == 2) { + emean_vs_ieta_HE7->Fill(double(ieta), en); + occupancy_map_HE7->Fill(double(ieta), double(iphi)); + if(useAllHistos_){ + emean_seqHE7->Fill(double(index), en); + } + } + } + if (depth == 4 && sub == 3) { emean_vs_ieta_HO->Fill(double(ieta), en); occupancy_map_HO->Fill(double(ieta), double(iphi)); if(useAllHistos_){ @@ -1041,7 +1337,10 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& if (depth == 1) ehcal_coneMC_1 += en; if (depth == 2) ehcal_coneMC_2 += en; if (depth == 3) ehcal_coneMC_3 += en; - if (depth == 4) ehcal_coneMC_4 += en; + if (depth == 4) ehcal_coneMC_4 += en; + if (depth == 5) ehcal_coneMC_5 += en; + if (depth == 6) ehcal_coneMC_6 += en; + if (depth == 7) ehcal_coneMC_7 += en; } //32-bit status word @@ -1099,6 +1398,10 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& map_econe_depth2->Fill(eta_MC, phi_MC, ehcal_coneMC_2); map_econe_depth3->Fill(eta_MC, phi_MC, ehcal_coneMC_3); map_econe_depth4->Fill(eta_MC, phi_MC, ehcal_coneMC_4); + map_econe_depth5->Fill(eta_MC, phi_MC, ehcal_coneMC_5); + map_econe_depth6->Fill(eta_MC, phi_MC, ehcal_coneMC_6); + map_econe_depth7->Fill(eta_MC, phi_MC, ehcal_coneMC_7); + } } @@ -1143,17 +1446,29 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& double HcalCone_d2 = 0.; double HcalCone_d3 = 0.; double HcalCone_d4 = 0.; + double HcalCone_d5 = 0.; + double HcalCone_d6 = 0.; + double HcalCone_d7 = 0.; + double HcalCone = 0.; int ietaMax1 = 9999; int ietaMax2 = 9999; int ietaMax3 = 9999; int ietaMax4 = 9999; + int ietaMax5 = 9999; + int ietaMax6 = 9999; + int ietaMax7 = 9999; + int ietaMax = 9999; double enMax1 = -9999.; double enMax2 = -9999.; double enMax3 = -9999.; double enMax4 = -9999.; + double enMax5 = -9999.; + double enMax6 = -9999.; + double enMax7 = -9999.; + // double enMax = -9999.; double etaMax = 9999.; @@ -1228,7 +1543,28 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& ietaMax4 = ieta; } } - + if(depth == 5) { + HcalCone_d5 += en; + if(enMax5 < en) { + enMax5 = en; + ietaMax5 = ieta; + } + } + if(depth == 6) { + HcalCone_d6 += en; + if(enMax6 < en) { + enMax6 = en; + ietaMax6 = ieta; + } + } + if(depth == 7) { + HcalCone_d7 += en; + if(enMax7 < en) { + enMax7 = en; + ietaMax7 = ieta; + } + } + if(depth != 4) { HcalCone += en; } @@ -1267,7 +1603,12 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& if (useAllHistos_){ if (depth == 1) meTE_HB1->Fill( en, t); - else if (depth == 2) meTE_HB2->Fill( en, t); + if (depth == 2) meTE_HB2->Fill( en, t); + if (depth == 3) meTE_HB3->Fill( en, t); + if (depth == 4) meTE_HB4->Fill( en, t); + if (depth == 5) meTE_HB5->Fill( en, t); + if (depth == 6) meTE_HB6->Fill( en, t); + else if (depth == 7) meTE_HB7->Fill( en, t); } } if(sub == 2 && (subdet_ == 2 || subdet_ == 5)) { @@ -1281,7 +1622,12 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& if (useAllHistos_){ if (depth == 1) meTE_HE1->Fill( en, t); - else if (depth == 2) meTE_HE2->Fill( en, t); + if (depth == 2) meTE_HE2->Fill( en, t); + if (depth == 3) meTE_HE3->Fill( en, t); + if (depth == 4) meTE_HE4->Fill( en, t); + if (depth == 5) meTE_HE5->Fill( en, t); + if (depth == 6) meTE_HE6->Fill( en, t); + else if (depth == 7) meTE_HE7->Fill( en, t); } } if(sub == 4 && (subdet_ == 4 || subdet_ == 5)) { @@ -1316,6 +1662,10 @@ void HcalRecHitsValidation::analyze(edm::Event const& ev, edm::EventSetup const& meEnConeEtaProfile_depth2->Fill(double(ietaMax2), HcalCone_d2); meEnConeEtaProfile_depth3->Fill(double(ietaMax3), HcalCone_d3); meEnConeEtaProfile_depth4->Fill(double(ietaMax4), HcalCone_d4); + meEnConeEtaProfile_depth5->Fill(double(ietaMax5), HcalCone_d5); + meEnConeEtaProfile_depth6->Fill(double(ietaMax6), HcalCone_d6); + meEnConeEtaProfile_depth7->Fill(double(ietaMax7), HcalCone_d7); + } meEnConeEtaProfile ->Fill(double(ietaMax), HcalCone); // meEnConeEtaProfile_E ->Fill(double(ietaMax), eEcalCone); From e9803e14ba2bced8bd65270be1a2332e779874db Mon Sep 17 00:00:00 2001 From: Salavat Date: Thu, 31 Oct 2013 15:03:59 +0100 Subject: [PATCH 34/45] update of CaloTowewrs/test/macro for SLHC --- .../test/macros/InputRelVal_Medium_SLHC.txt | 323 ++++++++++++++++++ .../CaloTowers/test/macros/RelValMacro.C | 16 +- .../test/macros/RunRVMacros_SLHC.csh | 141 ++++++++ .../html_indices/RelVal_HcalDigis_SLHC.html | 108 ++++++ .../html_indices/RelVal_RecHits_SLHC.html | 257 ++++++++++++++ 5 files changed, 837 insertions(+), 8 deletions(-) create mode 100644 Validation/CaloTowers/test/macros/InputRelVal_Medium_SLHC.txt create mode 100755 Validation/CaloTowers/test/macros/RunRVMacros_SLHC.csh create mode 100644 Validation/CaloTowers/test/macros/html_indices/RelVal_HcalDigis_SLHC.html create mode 100644 Validation/CaloTowers/test/macros/html_indices/RelVal_RecHits_SLHC.html diff --git a/Validation/CaloTowers/test/macros/InputRelVal_Medium_SLHC.txt b/Validation/CaloTowers/test/macros/InputRelVal_Medium_SLHC.txt new file mode 100644 index 0000000000000..baae833dfc29d --- /dev/null +++ b/Validation/CaloTowers/test/macros/InputRelVal_Medium_SLHC.txt @@ -0,0 +1,323 @@ + +HcalDigiTask_occupancy_vs_ieta_depth1_HB 1 HcalDigiTask_occupancy_vs_ieta_depth1_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth1_HB +HcalDigiTask_occupancy_vs_ieta_depth2_HB 1 HcalDigiTask_occupancy_vs_ieta_depth2_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth2_HB +HcalDigiTask_occupancy_vs_ieta_depth3_HB 1 HcalDigiTask_occupancy_vs_ieta_depth3_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth3_HB +HcalDigiTask_occupancy_vs_ieta_depth4_HB 1 HcalDigiTask_occupancy_vs_ieta_depth4_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth4_HB +HcalDigiTask_occupancy_vs_ieta_depth5_HB 1 HcalDigiTask_occupancy_vs_ieta_depth5_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth5_HB +HcalDigiTask_occupancy_vs_ieta_depth6_HB 1 HcalDigiTask_occupancy_vs_ieta_depth6_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth6_HB +HcalDigiTask_occupancy_vs_ieta_depth7_HB 1 HcalDigiTask_occupancy_vs_ieta_depth7_HB.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth7_HB + + +HcalDigiTask_occupancy_vs_ieta_depth1_HE 1 HcalDigiTask_occupancy_vs_ieta_depth1_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth1_HE +HcalDigiTask_occupancy_vs_ieta_depth2_HE 1 HcalDigiTask_occupancy_vs_ieta_depth2_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth2_HE +HcalDigiTask_occupancy_vs_ieta_depth3_HE 1 HcalDigiTask_occupancy_vs_ieta_depth3_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth3_HE +HcalDigiTask_occupancy_vs_ieta_depth4_HE 1 HcalDigiTask_occupancy_vs_ieta_depth4_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth4_HE +HcalDigiTask_occupancy_vs_ieta_depth5_HE 1 HcalDigiTask_occupancy_vs_ieta_depth5_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth5_HE +HcalDigiTask_occupancy_vs_ieta_depth6_HE 1 HcalDigiTask_occupancy_vs_ieta_depth6_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth6_HE +HcalDigiTask_occupancy_vs_ieta_depth7_HE 1 HcalDigiTask_occupancy_vs_ieta_depth7_HE.gif 1 -30 30 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth7_HE + +HcalDigiTask_occupancy_vs_ieta_depth1_HF 1 HcalDigiTask_occupancy_vs_ieta_depth1_HF.gif 1 -42 42 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth1_HF +HcalDigiTask_occupancy_vs_ieta_depth2_HF 1 HcalDigiTask_occupancy_vs_ieta_depth2_HF.gif 1 -42 42 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth2_HF +HcalDigiTask_occupancy_vs_ieta_depth4_HO 1 HcalDigiTask_occupancy_vs_ieta_depth4_HO.gif 1 -20 20 0 -1 1D noStat noChi2 NoLog 41 42 HcalDigiTask_occupancy_vs_ieta_depth4_HO + + + +HcalDigiTask_bin_5_frac_HB 1 HcalDigiTask_bin_5_frac_HB.gif 1 -0.1 1.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_5_frac_HB +HcalDigiTask_bin_5_frac_HE 1 HcalDigiTask_bin_5_frac_HE.gif 1 -0.1 1.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_5_frac_HE +HcalDigiTask_bin_5_frac_HF 1 HcalDigiTask_bin_3_frac_HF.gif 1 -1.0 2.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_3_frac_HF +HcalDigiTask_bin_6_7_frac_HB 1 HcalDigiTask_bin_6_7_frac_HB.gif 1 -0.1 1.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_6_7_frac_HB +HcalDigiTask_bin_6_7_frac_HE 1 HcalDigiTask_bin_6_7_frac_HE.gif 1 -0.1 1.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_6_7_frac_HE +HcalDigiTask_bin_6_7_frac_HF 1 HcalDigiTask_bin_4_5_frac_HF.gif 1 -1.0 2.0 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_bin_4_5_frac_HF + + + +HcalDigiTask_signal_amplitude_HB 1 HcalDigiTask_signal_amplitude_HB.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_HB +HcalDigiTask_signal_amplitude_depth1_HB 1 HcalDigiTask_signal_amplitude_depth1_HB.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth1_HB +HcalDigiTask_signal_amplitude_depth2_HB 1 HcalDigiTask_signal_amplitude_depth2_HB.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth2_HB +HcalDigiTask_signal_amplitude_HE 1 HcalDigiTask_signal_amplitude_HE.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_HE +HcalDigiTask_signal_amplitude_depth1_HE 1 HcalDigiTask_signal_amplitude_depth1_HE.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth1_HE +HcalDigiTask_signal_amplitude_depth2_HE 1 HcalDigiTask_signal_amplitude_depth2_HE.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth2_HE +HcalDigiTask_signal_amplitude_depth3_HE 1 HcalDigiTask_signal_amplitude_depth3_HE.gif 1 -10 2000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth3_HE +HcalDigiTask_signal_amplitude_HF 1 HcalDigiTask_signal_amplitude_HF.gif 1 -10 4000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_HF +HcalDigiTask_signal_amplitude_depth1_HF 1 HcalDigiTask_signal_amplitude_depth1_HF.gif 1 -10 4000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth1_HF +HcalDigiTask_signal_amplitude_depth2_HF 1 HcalDigiTask_signal_amplitude_depth2_HF.gif 1 -10 4000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_depth2_HF +HcalDigiTask_signal_amplitude_HO 1 HcalDigiTask_signal_amplitude_HO.gif 1 -10 1000 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_signal_amplitude_HO + + + +HcalDigiTask_number_of_amplitudes_above_10fC_HB 1 HcalDigiTask_number_of_amplitudes_above_10fC_HB.gif 5 -10 100 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_number_of_amplitudes_above_10fC_HB +HcalDigiTask_number_of_amplitudes_above_10fC_HE 1 HcalDigiTask_number_of_amplitudes_above_10fC_HE.gif 5 -10 100 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_number_of_amplitudes_above_10fC_HE +HcalDigiTask_number_of_amplitudes_above_10fC_HF 1 HcalDigiTask_number_of_amplitudes_above_10fC_HF.gif 5 -10 500 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_number_of_amplitudes_above_10fC_HF +HcalDigiTask_number_of_amplitudes_above_10fC_HO 1 HcalDigiTask_number_of_amplitudes_above_10fC_HO.gif 1 -1 100 0 -1 1D Statrv Chi2 Log 2 1 HcalDigiTask_number_of_amplitudes_above_10fC_HO + + + +HcalDigiTask_amplitude_vs_simhits_HB 0 HcalDigiTask_amplitude_vs_simhits_HB.gif 1 0 0.8 0 650 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_HB +HcalDigiTask_amplitude_vs_simhits_profile_HB +HcalDigiTask_amplitude_vs_simhits_depth1_HB 0 HcalDigiTask_amplitude_vs_simhits_depth1_HB.gif 1 0 0.8 0 600 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth1_HB +HcalDigiTask_amplitude_vs_simhits_profile_depth1_HB +HcalDigiTask_amplitude_vs_simhits_depth2_HB 0 HcalDigiTask_amplitude_vs_simhits_depth2_HB.gif 1 0 0.4 0 300 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth2_HB +HcalDigiTask_amplitude_vs_simhits_profile_depth2_HB +HcalDigiTask_amplitude_vs_simhits_HE 0 HcalDigiTask_amplitude_vs_simhits_HE.gif 1 0 0.6 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_HE +HcalDigiTask_amplitude_vs_simhits_profile_HE +HcalDigiTask_amplitude_vs_simhits_depth1_HE 0 HcalDigiTask_amplitude_vs_simhits_depth1_HE.gif 1 0 0.6 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth1_HE +HcalDigiTask_amplitude_vs_simhits_profile_depth1_HE +HcalDigiTask_amplitude_vs_simhits_depth2_HE 0 HcalDigiTask_amplitude_vs_simhits_depth2_HE.gif 1 0 0.5 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth2_HE +HcalDigiTask_amplitude_vs_simhits_profile_depth2_HE +HcalDigiTask_amplitude_vs_simhits_depth3_HE 0 HcalDigiTask_amplitude_vs_simhits_depth3_HE.gif 1 0 0.4 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth3_HE +HcalDigiTask_amplitude_vs_simhits_profile_depth3_HE +HcalDigiTask_amplitude_vs_simhits_HF 0 HcalDigiTask_amplitude_vs_simhits_HF.gif 1 0 20 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_HF +HcalDigiTask_amplitude_vs_simhits_profile_HF +HcalDigiTask_amplitude_vs_simhits_depth1_HF 0 HcalDigiTask_amplitude_vs_simhits_depth1_HF.gif 1 0 20 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth1_HF +HcalDigiTask_amplitude_vs_simhits_profile_depth1_HF +HcalDigiTask_amplitude_vs_simhits_depth2_HF 0 HcalDigiTask_amplitude_vs_simhits_depth2_HF.gif 1 0 20 0 450 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_depth2_HF +HcalDigiTask_amplitude_vs_simhits_profile_depth2_HF +HcalDigiTask_amplitude_vs_simhits_HO 0 HcalDigiTask_amplitude_vs_simhits_HO.gif 1 0 0.2 0 250 TM Statrv noChi2 NoLog 41 42 HcalDigiTask_amplitude_vs_simhits_HO +HcalDigiTask_amplitude_vs_simhits_profile_HO + + + +HcalDigiTask_ratio_amplitude_vs_simhits_HB 0 HcalDigiTask_ratio_amplitude_vs_simhits_HB.gif 10 -50 2000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_HB +HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HB 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HB.gif 10 -50 2000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HB +HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HB 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HB.gif 10 -50 2000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HB +HcalDigiTask_ratio_amplitude_vs_simhits_HE 0 HcalDigiTask_ratio_amplitude_vs_simhits_HE.gif 20 0 3000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_HE +HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HE 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HE.gif 20 0 3000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HE +HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HE 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HE.gif 20 0 3000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HE +HcalDigiTask_ratio_amplitude_vs_simhits_depth3_HE 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth3_HE.gif 20 0 3000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth3_HE +HcalDigiTask_ratio_amplitude_vs_simhits_HF 0 HcalDigiTask_ratio_amplitude_vs_simhits_HF.gif 1 -2 100 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_HF +HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HF 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HF.gif 1 -2 100 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth1_HF +HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HF 0 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HF.gif 1 -2 100 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_depth2_HF +HcalDigiTask_ratio_amplitude_vs_simhits_HO 0 HcalDigiTask_ratio_amplitude_vs_simhits_HO.gif 10 0 2000 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_ratio_amplitude_vs_simhits_HO + + + +HcalDigiTask_Ndigis_HB 1 HcalDigiTask_Ndigis_HB.gif 5 0 600 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_Ndigis_HB +HcalDigiTask_Ndigis_HE 1 HcalDigiTask_Ndigis_HE.gif 5 0 600 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_Ndigis_HE +HcalDigiTask_Ndigis_HF 1 HcalDigiTask_Ndigis_HF.gif 5 0 600 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_Ndigis_HF +HcalDigiTask_Ndigis_HO 1 HcalDigiTask_Ndigis_HO.gif 5 0 600 0 -1 1D Statrv Chi2 Log 1 2 HcalDigiTask_Ndigis_HO + + + + +HcalDigiTask_signal_amplitude_vs_bin_all_depths_HB 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HB.gif 1 0 10 0 1000 2D noStat noChi2 Log 2 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HB +HcalDigiTask_signal_amplitude_vs_bin_all_depths_HE 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HE.gif 1 0 10 0 1000 2D noStat noChi2 Log 2 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HE +HcalDigiTask_signal_amplitude_vs_bin_all_depths_HF 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HF.gif 1 0 10 0 4000 2D noStat noChi2 Log 2 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HF +HcalDigiTask_signal_amplitude_vs_bin_all_depths_HO 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HO.gif 1 0 10 0 500 2D noStat noChi2 Log 2 1 HcalDigiTask_signal_amplitude_vs_bin_all_depths_HO + + + + + + number_of_bad_cells_Ecal_EB 1 Ecal_EB_CaloTowers_numBadCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 bad cells number EB + number_of_bad_cells_Ecal_EE 1 Ecal_EE_CaloTowers_numBadCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 bad cells number EE + number_of_bad_cells_Hcal_HB 1 Hcal_HB_CaloTowers_numBadCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 bad cells number HB + number_of_bad_cells_Hcal_HE 1 Hcal_HE_CaloTowers_numBadCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 bad cells number HE + number_of_bad_cells_Hcal_HF 1 Hcal_HF_CaloTowers_numBadCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 bad cells number HF + number_of_recovered_cells_Ecal_EB 1 Ecal_EB_CaloTowers_numRcvCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 recovered cells number EB + number_of_recovered_cells_Ecal_EE 1 Ecal_EE_CaloTowers_numRcvCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 recovered cells number EE + number_of_recovered_cells_Hcal_HB 1 Hcal_HB_CaloTowers_numRcvCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 recovered cells number HB + number_of_recovered_cells_Hcal_HE 1 Hcal_HE_CaloTowers_numRcvCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 recovered cells number HE + number_of_recovered_cells_Hcal_HF 1 Hcal_HF_CaloTowers_numRcvCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 recovered cells number HF + number_of_problematic_cells_Ecal_EB 1 Ecal_EB_CaloTowers_numPrbCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 problematic cells number EB + number_of_problematic_cells_Ecal_EE 1 Ecal_EE_CaloTowers_numPrbCells.gif 1 0 26 0 -1 1D noStat noChi2 Log 2 1 problematic cells number EE + number_of_problematic_cells_Hcal_HB 1 Hcal_HB_CaloTowers_numPrbCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 problematic cells number HB + number_of_problematic_cells_Hcal_HE 1 Hcal_HE_CaloTowers_numPrbCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 problematic cells number HE + number_of_problematic_cells_Hcal_HF 1 Hcal_HF_CaloTowers_numPrbCells.gif 1 0 5 0 -1 1D noStat noChi2 Log 2 1 problematic cells number HF + CaloTowersTask_MET_HB 1 HB_CaloTowers_MET_HB.gif 8 0 800 0 -1 1D Stat Chi2 Log 2 1 HB Calo MET (GeV) + CaloTowersTask_SET_HB 1 HB_CaloTowers_SET_HB.gif 20 0 2200 0 -1 1D Stat Chi2 Log 2 1 Barrel CaloTowers SET (GeV) + CaloTowersTask_energy_ECAL_HB 1 HB_CaloTowers_Energy_in_ECAL_HB.gif 10 0 1500 0 -1 1D Stat Chi2 Log 2 1 HB CaloTowers ECAL energy (GeV) + CaloTowersTask_energy_HCAL_HB 1 HB_CaloTowers_Energy_in_HCAL_HB.gif 10 0 2000 0 -1 1D Stat Chi2 Log 2 1 HB CaloTowers HCAL energy (GeV) + CaloTowersTask_energy_HcalPlusEcalPlusHO_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_OUTER_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_ECAL_component_of_tower_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_HCAL_component_of_tower_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_ECAL_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HCAL_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_number_of_fired_towers_HB 1 HB_CaloTowers_Ntowers_HB.gif 2 0 500 0 -1 1D Stat Chi2 NoLog 2 1 HB CaloTowers number + CaloTowersTask_phi_MET_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HB 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_EM_Timing_HB 1 HB_CaloTowers_EM_Timing_HB.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HB CaloTowers EM Timing + CaloTowersTask_HAD_Timing_HB 1 HB_CaloTowers_HAD_Timing_HB.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HB CaloTowers HAD Timing + CaloTowersTask_EM_Energy_Timing_HB 1 HB_CaloTowers_EM_Energy_Timing_HB.gif 1 0 800 0 -1 TM noStat noChi2 NoLog 53 42 HB CaloTowers EM Timing vs Energy + CaloTowersTask_EM_Energy_Timing_profile_HB + CaloTowersTask_HAD_Energy_Timing_HB 1 HB_CaloTowers_HAD_Energy_Timing_HB.gif 1 0 600 0 -1 TM noStat noChi2 NoLog 53 42 HB CaloTowers HAD Timing vs Energy + CaloTowersTask_HAD_Energy_Timing_profile_HB + CaloTowersTask_MET_HE 1 HE_CaloTowers_MET_HE.gif 5 0 700 0 -1 1D Stat Chi2 Log 2 1 HE Calo MET (GeV) + CaloTowersTask_SET_HE 1 HE_CaloTowers_SET_HE.gif 20 0 1000 0 -1 1D Stat Chi2 Log 2 1 Endcap CaloTowers SET (GeV) + CaloTowersTask_energy_ECAL_HE 1 HE_CaloTowers_Energy_in_ECAL_HE.gif 5 0 -1 0 -1 1D Stat Chi2 Log 2 1 HE CaloTowers ECAL energy (GeV) + CaloTowersTask_energy_HCAL_HE 1 HE_CaloTowers_Energy_in_HCAL_HE.gif 5 0 -1 0 -1 1D Stat Chi2 Log 2 1 HE CaloTowers HCAL energy (GeV) + CaloTowersTask_energy_HcalPlusEcalPlusHO_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_OUTER_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_ECAL_component_of_tower_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_HCAL_component_of_tower_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_ECAL_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HCAL_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_number_of_fired_towers_HE 1 HE_CaloTowers_Ntowers_HE.gif 2 0 500 0 -1 1D Stat Chi2 NoLog 2 1 HE CaloTowers number + CaloTowersTask_phi_MET_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HE 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_EM_Timing_HE 1 HE_CaloTowers_EM_Timing_HE.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HE CaloTowers EM Timing + CaloTowersTask_HAD_Timing_HE 1 HE_CaloTowers_HAD_Timing_HE.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HE CaloTowers HAD Timing + CaloTowersTask_EM_Energy_Timing_HE 1 HE_CaloTowers_EM_Energy_Timing_HE.gif 1 0 1500 0 -1 TM noStat noChi2 NoLog 53 42 HE CaloTowers EM Timing vs Energy + CaloTowersTask_EM_Energy_Timing_profile_HE + CaloTowersTask_HAD_Energy_Timing_HE 1 HE_CaloTowers_HAD_Energy_Timing_HE.gif 1 0 1500 0 -1 TM noStat noChi2 NoLog 53 42 HE CaloTowers HAD Timing vs Energy + CaloTowersTask_HAD_Energy_Timing_profile_HE + CaloTowersTask_MET_HF 1 HF_CaloTowers_MET_HF.gif 2 0 200 0 -1 1D Stat Chi2 Log 2 1 HF Calo MET (GeV) + CaloTowersTask_SET_HF 1 HF_CaloTowers_SET_HF.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 Forward CaloTowers SET (GeV) + CaloTowersTask_energy_ECAL_HF 1 HF_CaloTowers_Energy_in_ECAL_HF.gif 5 0 -1 0 -1 1D Stat Chi2 Log 2 1 HF CaloTowers ECAL energy (GeV) + CaloTowersTask_energy_HCAL_HF 1 HF_CaloTowers_Energy_in_HCAL_HF.gif 5 0 -1 0 -1 1D Stat Chi2 Log 2 1 HF CaloTowers HCAL energy (GeV) + CaloTowersTask_energy_HcalPlusEcalPlusHO_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_OUTER_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_ECAL_component_of_tower_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_energy_of_HCAL_component_of_tower_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_ECAL_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_map_energy_HCAL_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_number_of_fired_towers_HF 1 HF_CaloTowers_Ntowers_HF.gif 2 0 500 0 -1 1D Stat Chi2 NoLog 2 1 HF CaloTowers number + CaloTowersTask_phi_MET_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_sum_of_energy_HCAL_vs_ECAL_HF 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + CaloTowersTask_EM_Timing_HF 1 HF_CaloTowers_EM_Timing_HF.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HF CaloTowers EM Timing + CaloTowersTask_HAD_Timing_HF 1 HF_CaloTowers_HAD_Timing_HF.gif 2 0 -1 0 -1 1D Stat Chi2 Log 2 1 HF CaloTowers HAD Timing + CaloTowersTask_EM_Energy_Timing_HF 1 HF_CaloTowers_EM_Energy_Timing_HF.gif 1 0 -1 0 -1 TM noStat noChi2 NoLog 53 42 HF CaloTowers EM Timing vs Energy + CaloTowersTask_EM_Energy_Timing_profile_HF + CaloTowersTask_HAD_Energy_Timing_HF 1 HF_CaloTowers_HAD_Energy_Timing_HF.gif 1 0 -1 0 -1 TM noStat noChi2 NoLog 53 42 HF CaloTowers HAD Timing vs Energy + CaloTowersTask_HAD_Energy_Timing_profile_HF + CaloTowersTask_occupancy_vs_ieta 1 CaloTowers_occupancy_vs_ieta.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 CaloTowers Occupancy vs. iEta + HcalRecHitTask_RecHit_StatusWord_HB 1 HB_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HB status word + HcalRecHitTask_RecHit_StatusWord_HE 1 HE_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HE status word + HcalRecHitTask_RecHit_StatusWord_HF 1 HF_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HF status word + HcalRecHitTask_RecHit_StatusWord_HO 1 HO_StatusWord.gif 1 0 -1 0 -1 1D NoStat noChi2 noLog 41 42 HO status word + HcalRecHitTask_RecHit_Aux_StatusWord_HB 1 HB_Aux_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HB Aux status word + HcalRecHitTask_RecHit_Aux_StatusWord_HE 1 HE_Aux_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HE Aux status word + HcalRecHitTask_RecHit_Aux_StatusWord_HF 1 HF_Aux_StatusWord.gif 1 0 -1 1E-8 -1 1D NoStat noChi2 Log 41 42 HF Aux status word + HcalRecHitTask_RecHit_Aux_StatusWord_HO 1 HO_Aux_StatusWord.gif 1 0 -1 0 -1 1D NoStat noChi2 noLog 41 42 HO Aux status word + HcalRecHitTask_energy_of_rechits_HB 1 RecHits_energy_HB.gif 10 0 600 0 -1 1D Statrv Chi2 Log 2 1 HB RecHits energy (GeV) + HcalRecHitTask_energy_of_rechits_HE 1 RecHits_energy_HE.gif 10 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HE RecHits energy (GeV) + HcalRecHitTask_energy_of_rechits_HF 1 RecHits_energy_HF.gif 10 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HF RecHits energy (GeV) + HcalRecHitTask_energy_of_rechits_HO 1 RecHits_energy_HO.gif 1 0 60 0 -1 1D Statrv Chi2 Log 2 1 HO RecHits energy (GeV) + HcalRecHitTask_timing_HB 1 RecHits_timing_HB.gif 1 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HB RecHits timing + HcalRecHitTask_timing_HE 1 RecHits_timing_HE.gif 1 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HE RecHits timing + HcalRecHitTask_timing_HF 1 RecHits_timing_HF.gif 1 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HF RecHits timing + HcalRecHitTask_timing_HO 1 RecHits_timing_HO.gif 1 0 -1 0 -1 1D Statrv Chi2 Log 2 1 HO RecHits timing + HcalRecHitTask_timing_vs_energy_HB 1 HB_Timing_vs_Energy.gif 1 0 500 0 -1 TM NoStat noChi2 noLog 53 42 HB Timing vs. Energy + HcalRecHitTask_timing_vs_energy_profile_HB + HcalRecHitTask_timing_vs_energy_HB_depth1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HB_depth2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HE 1 HE_Timing_vs_Energy.gif 1 0 500 0 -1 TM NoStat noChi2 noLog 53 42 HE Timing vs. Energy + HcalRecHitTask_timing_vs_energy_profile_HE + HcalRecHitTask_timing_vs_energy_HE_depth1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HE_depth2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HF 1 HF_Timing_vs_Energy.gif 1 0 -1 0 -1 TM NoStat noChi2 noLog 53 42 HF Timing vs. Energy + HcalRecHitTask_timing_vs_energy_profile_HF + HcalRecHitTask_timing_vs_energy_HFL 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HFS 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + HcalRecHitTask_timing_vs_energy_HO 1 HO_Timing_vs_Energy.gif 1 0 30 0 -1 TM NoStat noChi2 noLog 53 42 HO Timing vs. Energy + HcalRecHitTask_timing_vs_energy_profile_HO + N_HB 1 N_HB.gif 10 0 1200 0 -1 1D Statrv Chi2 NoLog 2 1 Number of HB RecHits + N_HE 1 N_HE.gif 10 0 500 0 -1 1D Statrv Chi2 NoLog 2 1 Number of HE RecHits + N_HF 1 N_HF.gif 10 0 600 0 -1 1D Statrv Chi2 NoLog 2 1 Number of HF RecHits + N_HO 1 N_HO.gif 10 0 600 0 -1 1D Statrv Chi2 NoLog 2 1 Number of HO RecHits + HcalRecHitTask_severityLevel_HB 1 severityLevel_HB.gif 1 0 25 0 -1 1D noStat noChi2 Log 2 1 severityLevel HB + HcalRecHitTask_severityLevel_HE 1 severityLevel_HE.gif 1 0 25 0 -1 1D noStat noChi2 Log 2 1 severityLevel HE + HcalRecHitTask_severityLevel_HF 1 severityLevel_HF.gif 1 0 25 0 -1 1D noStat noChi2 Log 2 1 severityLevel HF + HcalRecHitTask_severityLevel_HO 1 severityLevel_HO.gif 1 0 25 0 -1 1D noStat noChi2 Log 2 1 severityLevel HO + RMS_seq_HB1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HB2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HE1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HE2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HE3 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HF1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HF2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_seq_HO 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HB1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HB2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HE1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HE2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HE3 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HF1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HF2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + RMS_vs_ieta_HO 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HB1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HB2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HE1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HE2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HE3 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HF1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HF2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_seq_HO 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + emean_vs_ieta_HB1 1 emean_vs_ieta_HB1.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth1 + emean_vs_ieta_HB2 1 emean_vs_ieta_HB2.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth2 + emean_vs_ieta_HB3 1 emean_vs_ieta_HB3.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth3 + emean_vs_ieta_HB4 1 emean_vs_ieta_HB4.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth4 + emean_vs_ieta_HB5 1 emean_vs_ieta_HB5.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth5 + emean_vs_ieta_HB6 1 emean_vs_ieta_HB6.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth6 + emean_vs_ieta_HB7 1 emean_vs_ieta_HB7.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HB depth7 + emean_vs_ieta_HE1 1 emean_vs_ieta_HE1.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth1 + emean_vs_ieta_HE2 1 emean_vs_ieta_HE2.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth2 + emean_vs_ieta_HE3 1 emean_vs_ieta_HE3.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth3 + emean_vs_ieta_HE4 1 emean_vs_ieta_HE4.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth4 + emean_vs_ieta_HE5 1 emean_vs_ieta_HE5.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth5 + emean_vs_ieta_HE6 1 emean_vs_ieta_HE6.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth6 + emean_vs_ieta_HE7 1 emean_vs_ieta_HE7.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HE depth7 + + + emean_vs_ieta_HF1 1 emean_vs_ieta_HF1.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HF depth1 + emean_vs_ieta_HF2 1 emean_vs_ieta_HF2.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HF depth2 + emean_vs_ieta_HO 1 emean_vs_ieta_HO.gif 1 0 -1 0 -1 PR noStat noChi2 NoLog 41 42 Mean energy vs ieta (GeV) HO + map_ecal 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HB1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HB2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HE1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HE2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HE3 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HF1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HF2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occ_sequential1D_HO 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HB1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HB2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HE1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HE2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HE3 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HF1 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HF2 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_map_HO 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + occupancy_vs_ieta_HB1 1 occupancy_vs_ieta_HB1.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 1: occupancy vs ieta + occupancy_vs_ieta_HB2 1 occupancy_vs_ieta_HB2.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 2: occupancy vs ieta + occupancy_vs_ieta_HB3 1 occupancy_vs_ieta_HB3.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 3: occupancy vs ieta + occupancy_vs_ieta_HB4 1 occupancy_vs_ieta_HB4.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 4: occupancy vs ieta + occupancy_vs_ieta_HB5 1 occupancy_vs_ieta_HB5.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 5: occupancy vs ieta + occupancy_vs_ieta_HB6 1 occupancy_vs_ieta_HB6.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 6: occupancy vs ieta + occupancy_vs_ieta_HB7 1 occupancy_vs_ieta_HB7.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HB depth 7: occupancy vs ieta + + + + occupancy_vs_ieta_HE1 1 occupancy_vs_ieta_HE1.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 1: occupancy vs ieta + occupancy_vs_ieta_HE2 1 occupancy_vs_ieta_HE2.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 2: occupancy vs ieta + occupancy_vs_ieta_HE3 1 occupancy_vs_ieta_HE3.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 3: occupancy vs ieta + occupancy_vs_ieta_HE4 1 occupancy_vs_ieta_HE4.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 4: occupancy vs ieta + occupancy_vs_ieta_HE5 1 occupancy_vs_ieta_HE5.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 5: occupancy vs ieta + occupancy_vs_ieta_HE6 1 occupancy_vs_ieta_HE6.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 6: occupancy vs ieta + occupancy_vs_ieta_HE7 1 occupancy_vs_ieta_HE7.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HE depth 7: occupancy vs ieta + + + occupancy_vs_ieta_HF1 1 occupancy_vs_ieta_HF1.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HF depth 1: occupancy vs ieta + occupancy_vs_ieta_HF2 1 occupancy_vs_ieta_HF2.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HF depth 2: occupancy vs ieta + occupancy_vs_ieta_HO 1 occupancy_vs_ieta_HO.gif 1 0 -1 0 -1 1D noStat noChi2 NoLog 41 42 HO: occupancy vs ieta + emap_depth1 1 emap_depth1.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth1 + emap_depth1 1 emap_depth1-1.gif 1 -29 29 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth1 (HB/HE) + emap_depth2 1 emap_depth2.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth2 + emap_depth3 1 emap_depth3.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth3 + emap_depth4 1 emap_depth4.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth4 + emap_depth5 1 emap_depth5.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth5 + emap_depth6 1 emap_depth6.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth6 + emap_depth7 1 emap_depth7.gif 1 -42 42 0 72 2D noStat noChi2 NoLog 2 1 eta-phi RecHits Emap depth7 + + + + hLumiBlockCount 0 notDrawn.gif 1 -1 -1 -1 -1 1D Stat Chi2 Log 2 1 notDrawn + hRBXEnergy 1 RBX_energy.gif 1 0 500 0 -1 1D Statrv Chi2 NoLog 2 1 RBX energy (GeV) + hRBXEnergyType1 1 RBX_energy_type1.gif 1 0 400 0 -1 1D Statrv Chi2 NoLog 2 1 RBX energy type 1 (GeV) + hRBXEnergyType2 1 RBX_energy_type2.gif 4 0 1200 0 -1 1D Statrv Chi2 NoLog 2 1 RBX energy type 2 (GeV) + hRBXEnergyType3 1 RBX_energy_type3.gif 4 0 1200 0 -1 1D Statrv Chi2 NoLog 2 1 RBX energy type 3 (GeV) + hRBXNHits 1 RBX_Nhits.gif 1 0 40 0 -1 1D Statrv Chi2 NoLog 2 1 RBX number of hits diff --git a/Validation/CaloTowers/test/macros/RelValMacro.C b/Validation/CaloTowers/test/macros/RelValMacro.C index f494119f7bed6..0f81f7d746c22 100644 --- a/Validation/CaloTowers/test/macros/RelValMacro.C +++ b/Validation/CaloTowers/test/macros/RelValMacro.C @@ -42,12 +42,12 @@ void RelValMacro(TString ref_vers = "218", TString val_vers = "218", TString rfn //HcalDigis //Please note 22 MC histograms are taken OUT of here //Add 11 for HD_nProfID and 11 for HD_nHist1 and 22 for HD_nHistTot - const int HD_nHistTot = 43 + 11 + 4 + 1; + const int HD_nHistTot = 43 + 11 + 4 + 1 + 9 ; // const int HD_nHistTot = 43 + 11 + 4 + 11 + 1; - const int HD_nHist1 = 8 + 5 + 11 + 4 + 4 + 1; + const int HD_nHist1 = 8 + 5 + 11 + 4 + 4 + 1 + 9 ; // const int HD_nHist1 = 8 + 5 + 11 + 4 + 11 + 4 + 1; - const int HD_nHist2 = 11; - const int HD_nHist2D = 4; + const int HD_nHist2 = 11 ; + const int HD_nHist2D = 4 ; const int HD_nProfInd = 0; // const int HD_nProfInd = 11; @@ -58,11 +58,11 @@ void RelValMacro(TString ref_vers = "218", TString val_vers = "218", TString rfn const int CT_nProf = 6; //RecHits - const int RH_nHistTot = 87 + 4 + 4 + 5; - const int RH_nHist1 = 24 + 4 + 4; + const int RH_nHistTot = 87 + 4 + 4 + 5 + 9 + 9 + 3; + const int RH_nHist1 = 24 + 4 + 4 + 9; const int RH_nHist2 = 4; - const int RH_nHist2D = 5; - const int RH_nProfInd = 12; + const int RH_nHist2D = 5 + 3; + const int RH_nProfInd = 12 + 9; //RBX Noise const int RBX_nHistTot = 6; diff --git a/Validation/CaloTowers/test/macros/RunRVMacros_SLHC.csh b/Validation/CaloTowers/test/macros/RunRVMacros_SLHC.csh new file mode 100755 index 0000000000000..05a03c41ee9ed --- /dev/null +++ b/Validation/CaloTowers/test/macros/RunRVMacros_SLHC.csh @@ -0,0 +1,141 @@ +#!/bin/tcsh + +#Check to see if the CMS environment is set up +if ($?CMSSW_BASE != 1) then + echo "CMS environment not set up" +# exit +endif + +#Check for correct number of arguments +if ($#argv<2) then + echo "Script needs 2 input variable" +# exit +endif + +set NEW_VERS=$1 +set OLD_VERS=$2 + +# Two bit value with the first corresponding to whether the validation version is centrally +# harvested (1) or not (0) and the second to whether the reference version is harvested. Thus: +# 00: both are privately produced +# 01: reference version is harvested, validation version is private +# 10: validation version is harvested, reference version is private +# 11: both versions are harvested +# Any other value is the same as 0 +set harvest=11 + +#Check if base directory already exists +if (-d ${NEW_VERS}_vs_${OLD_VERS}_RelVal) then + echo "Directory already exists" + exit +endif + +#Create base directory and top directories +mkdir ${NEW_VERS}_vs_${OLD_VERS}_RelVal +cd ${NEW_VERS}_vs_${OLD_VERS}_RelVal + +cp ../html_indices/TopLevelRelVal.html index.html + + +#TTbar +mkdir TTbar +mkdir TTbar/CaloTowers +mkdir TTbar/RecHits +mkdir TTbar/RBX +mkdir TTbar/HcalDigis + +cp ../html_indices/RelVal_HcalDigis_SLHC.html TTbar/HcalDigis/index.html +cat ../html_indices/RelVal_RecHits_SLHC.html | sed -e s/DATA_SAMPLE/TTbar/ > TTbar/RecHits/index.html +cp ../html_indices/RelVal_CaloTowers.html TTbar/CaloTowers/index.html +cp ../html_indices/RBX.html TTbar/RBX/index.html + +#cp -r TTbar TTbarStartup +#mv TTbar TTbarMC + +#QCD +mkdir QCD +mkdir QCD/CaloTowers +mkdir QCD/RecHits +mkdir QCD/RBX +mkdir QCD/HcalDigis + +cp ../html_indices/RelVal_HcalDigis_SLHC.html QCD/HcalDigis/index.html +cat ../html_indices/RelVal_RecHits_SLHC.html | sed -e s/DATA_SAMPLE/QCD_80_120/ > QCD/RecHits/index.html +cp ../html_indices/RelVal_CaloTowers.html QCD/CaloTowers/index.html +cp ../html_indices/RBX.html QCD/RBX/index.html + +#cp -r QCD QCDStartup +#mv QCD QCDMC + +#High Pt QCD +mkdir HighPtQCD +mkdir HighPtQCD/CaloTowers +mkdir HighPtQCD/RecHits +mkdir HighPtQCD/RBX +mkdir HighPtQCD/HcalDigis + +cp ../html_indices/RelVal_HcalDigis_SLHC.html HighPtQCD/HcalDigis/index.html +cat ../html_indices/RelVal_RecHits_SLHC.html | sed -e s/DATA_SAMPLE/QCD_3000_3500/ > HighPtQCD/RecHits/index.html +cp ../html_indices/RelVal_CaloTowers.html HighPtQCD/CaloTowers/index.html +cp ../html_indices/RBX.html HighPtQCD/RBX/index.html + +#MinBias +mkdir MinBias +mkdir MinBias/CaloTowers +mkdir MinBias/RecHits +mkdir MinBias/RBX +mkdir MinBias/HcalDigis + +cp ../html_indices/RelVal_HcalDigis_SLHC.html MinBias/HcalDigis/index.html +cat ../html_indices/RelVal_RecHits_SLHC.html | sed -e s/DATA_SAMPLE/MinBias/ > MinBias/RecHits/index.html +cp ../html_indices/RelVal_CaloTowers.html MinBias/CaloTowers/index.html +cp ../html_indices/RBX.html MinBias/RBX/index.html + + +#Single Pions + +mkdir SinglePi50_ECAL+HCAL_Scan + +cp ../html_indices/SinglePiScan.html SinglePi50_ECAL+HCAL_Scan/index.html + +cd ../ + + +#Process Startup TTbar +root -b -q 'RelValMacro.C("'${OLD_VERS}'","'${NEW_VERS}'","'HcalRecHitValidationRelVal_TTbar_${OLD_VERS}.root'","'HcalRecHitValidationRelVal_TTbar_${NEW_VERS}.root'","InputRelVal_Medium_SLHC.txt",'${harvest}')' + +mv *HcalDigi*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/TTbar/HcalDigis/ +mv *CaloTowers*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/TTbar/CaloTowers/ +mv RBX*gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/TTbar/RBX/ +mv *gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/TTbar/RecHits/ + + +#Process Startup QCD +root -b -q 'RelValMacro.C("'${OLD_VERS}_QCD'","'${NEW_VERS}_QCD'","'HcalRecHitValidationRelVal_QCD80_120_${OLD_VERS}.root'","'HcalRecHitValidationRelVal_QCD80_120_${NEW_VERS}.root'","InputRelVal_Medium_SLHC.txt",'${harvest}')' + +mv *HcalDigi*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/QCD/HcalDigis/ +mv *CaloTowers*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/QCD/CaloTowers/ +mv RBX*gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/QCD/RBX/ +mv *gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/QCD/RecHits/ + +#Process Startup HighPtQCD +root -b -q 'RelValMacro.C("'${OLD_VERS}_Startup'","'${NEW_VERS}_Startup'","'HcalRecHitValidationRelVal_HighPtQCD_Startup_${OLD_VERS}.root'","'HcalRecHitValidationRelVal_HighPtQCD_Startup_${NEW_VERS}.root'","InputRelVal_Medium_SLHC.txt",'${harvest}')' + +mv *HcalDigi*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/HighPtQCD/HcalDigis/ +mv *CaloTowers*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/HighPtQCD/CaloTowers/ +mv RBX*gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/HighPtQCD/RBX/ +mv *gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/HighPtQCD/RecHits/ + +#Process Startup MinBias +root -b -q 'RelValMacro.C("'${OLD_VERS}_Startup'","'${NEW_VERS}_Startup'","'HcalRecHitValidationRelVal_MinBias_Startup_${OLD_VERS}.root'","'HcalRecHitValidationRelVal_MinBias_Startup_${NEW_VERS}.root'","InputRelVal_Medium_SLHC.txt",'${harvest}')' + +mv *HcalDigi*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/MinBias/HcalDigis/ +mv *CaloTowers*.gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/MinBias/CaloTowers/ +mv RBX*gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/MinBias/RBX/ +mv *gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/MinBias/RecHits/ + +#Process single pions +#root -b -q 'SinglePi.C("'${OLD_VERS}'","'${NEW_VERS}'")' +mv *gif ${NEW_VERS}_vs_${OLD_VERS}_RelVal/SinglePi50_ECAL+HCAL_Scan + +exit diff --git a/Validation/CaloTowers/test/macros/html_indices/RelVal_HcalDigis_SLHC.html b/Validation/CaloTowers/test/macros/html_indices/RelVal_HcalDigis_SLHC.html new file mode 100644 index 0000000000000..88ab790003592 --- /dev/null +++ b/Validation/CaloTowers/test/macros/html_indices/RelVal_HcalDigis_SLHC.html @@ -0,0 +1,108 @@ +

>>> click on thumbnail to get a full-size plot + + +


Occupancy

+ + + + + + + + + + + + + + + + + + + + + + +

Fraction of Signal in SOI and subequent TS' Over Amplitude if Ampl. is Big

+ + + + + + + + +

Signal Amplitude

+ + + + + + + + + + + + + +

Number Of Amplitudes

+ + + + + + + +

Number Of Digis

+ + + + + + +

Amplitudes Versus TS'

+ + + + + diff --git a/Validation/CaloTowers/test/macros/html_indices/RelVal_RecHits_SLHC.html b/Validation/CaloTowers/test/macros/html_indices/RelVal_RecHits_SLHC.html new file mode 100644 index 0000000000000..b408e5413e7a9 --- /dev/null +++ b/Validation/CaloTowers/test/macros/html_indices/RelVal_RecHits_SLHC.html @@ -0,0 +1,257 @@ +

RelVal DATA_SAMPLE samples +

+ + >>> click on thumbnail to get a full-size plot + +
+

+Mean reconstructed energy as a function of ieta (ring) +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + +
+ + +


+

+RecHits energy distribution in each subdetector +
+
+ + + + +
+ + + + +
+ +


+

+Number of RecHits in each subdetector (with default ZeroSuppression) +
+
+ + + + +
+ + + + +
+ + +


+

+RecHits Timing as a function of energy in each subdetector +
+
+ + + + +
+ + + + +
+ +


+

+RecHits timing distribution in each subdetector +
+
+ + + + +
+ + + + +
+ + +


+

+Occupancy as a function of ieta +
+
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + +
+ +


+

+HCAL Status Word in each subdetector +
+
+ + + + +
+ + + + +
+


+ +
+

+HCAL Aux Status Word in each subdetector +
+
+ + + + +
+ + + + +
+


+ +
+

+HCAL Severity Level in each subdetector +
+
+ + + + +
+ + + + +
+ +


+

+HCAL of RecHits in ieta-iphi maps for each depth +
+
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + + +
+


+ From ec2a4f855f2f728887a5dca7e6afc16c14e9326b Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2013 18:33:40 +0100 Subject: [PATCH 35/45] option to turn off pixel dataloss --- .../Configuration/python/combinedCustoms.py | 4 ++++ .../Configuration/python/customise_mixing.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py index 464811ba12b6d..da42f01bfa76d 100644 --- a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py @@ -14,6 +14,7 @@ from SLHCUpgradeSimulations.Configuration.gemCustoms import customise as customise_gem from SLHCUpgradeSimulations.Configuration.fastsimCustoms import customiseDefault as fastCustomiseDefault from SLHCUpgradeSimulations.Configuration.fastsimCustoms import customisePhase2 as fastCustomisePhase2 +from SLHCUpgradeSimulations.Configuration.customise_mixing import customise_noPixelDataloss as cNoPixDataloss import SLHCUpgradeSimulations.Configuration.aging as aging @@ -324,3 +325,6 @@ def fastsimDefault(process): def fastsimPhase2(process): return fastCustomisePhase2(process) +def customise_noPixelDataloss(process): + return cNoPixDataloss(process) + diff --git a/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py b/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py index 66f499040bc67..7e5b4e0d0018d 100644 --- a/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py +++ b/SLHCUpgradeSimulations/Configuration/python/customise_mixing.py @@ -35,6 +35,8 @@ def customise_NoCrossing(process): return (process) def customise_pixelMixing_PU(process): + if hasattr(process,'noPixelDataloss'): + return process #avoid race condition if hasattr(process,'mix'): n=0 if hasattr(process.mix,'input'): @@ -55,3 +57,15 @@ def customise_NoCrossing_PU(process): process=customise_NoCrossing(process) return (process) +def customise_noPixelDataloss(process): + process.noPixelDataloss=cms.untracked.PSet() + if hasattr(process,'mix'): + process.mix.digitizers.pixel.thePixelColEfficiency_BPix1 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_BPix2 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_BPix3 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_BPix4 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_FPix1 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_FPix2 = cms.double(1) + process.mix.digitizers.pixel.thePixelColEfficiency_FPix3 = cms.double(1) + return process + From 899c5b940cc8ccde2033694cd09cd32b77f10331 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2013 21:14:28 +0100 Subject: [PATCH 36/45] moving to avoid conflict --- .../Configuration/python/combinedCustoms.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py index da42f01bfa76d..6c981fd4a5819 100644 --- a/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/combinedCustoms.py @@ -319,12 +319,13 @@ def fixEcalConditions_3000(process): ) return process +def customise_noPixelDataloss(process): + return cNoPixDataloss(process) + def fastsimDefault(process): return fastCustomiseDefault(process) def fastsimPhase2(process): return fastCustomisePhase2(process) -def customise_noPixelDataloss(process): - return cNoPixDataloss(process) From fbb8a0e44359c2a36ab41630bf6ea1e0985e33c5 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2013 21:53:33 +0100 Subject: [PATCH 37/45] customise requests from Jake and Salavat as I understand them --- SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py index e97a1218b35ef..236f42faff0d8 100644 --- a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py @@ -117,6 +117,7 @@ def customise_Digi(process): process.mix.digitizers.hcal.he.pixels = cms.int32(4500*4*2) process.mix.digitizers.hcal.HFUpgradeQIE = True process.mix.digitizers.hcal.HcalReLabel.RelabelHits=cms.untracked.bool(True) + process.mix.digitizers.hcal.doTimeSlew = False if hasattr(process,'HcalTPGCoderULUT'): process.HcalTPGCoderULUT.hcalTopologyConstants.mode=cms.string('HcalTopologyMode::SLHC') @@ -229,8 +230,8 @@ def customise_harvesting(process): return process def customise_Validation(process): - process.validation_step.remove(process.AllHcalDigisValidation) - process.validation_step.remove(process.RecHitsValidation) + process.AllHcalDigisValidation.doSLHC = True + process.RecHitsValidation.doSLHC = True process.validation_step.remove(process.globalhitsanalyze) return process From b37f5d909759d8698e31f3228afa1c738cde1889 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 1 Nov 2013 00:06:07 +0100 Subject: [PATCH 38/45] iterate on what was really meant in Salavats recipe --- SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py index 236f42faff0d8..deafb1d570a16 100644 --- a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py @@ -230,8 +230,8 @@ def customise_harvesting(process): return process def customise_Validation(process): - process.AllHcalDigisValidation.doSLHC = True - process.RecHitsValidation.doSLHC = True + process.AllHcalDigisValidation.doSLHC = cms.untracked.bool(True) + process.RecHitsValidation.doSLHC = cms.untracked.bool(True) process.validation_step.remove(process.globalhitsanalyze) return process From 18f026284e7a92213e9cc8aa196f0ce4887507e2 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 1 Nov 2013 01:00:57 +0100 Subject: [PATCH 39/45] whoops - seems the modules still dont run - turning them off for now --- SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py index deafb1d570a16..30e03a4ddce32 100644 --- a/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/HCalCustoms.py @@ -233,6 +233,9 @@ def customise_Validation(process): process.AllHcalDigisValidation.doSLHC = cms.untracked.bool(True) process.RecHitsValidation.doSLHC = cms.untracked.bool(True) process.validation_step.remove(process.globalhitsanalyze) + #err, well, these still dont run + process.validation_step.remove(process.AllHcalDigisValidation) + process.validation_step.remove(process.RecHitsValidation) return process def customise_condOverRides(process): From 8a048a7a19cd8bb92912601895368b6ade716721 Mon Sep 17 00:00:00 2001 From: Geonmo Date: Wed, 6 Nov 2013 11:14:26 +0900 Subject: [PATCH 40/45] Rename cfi file --- .../python/{MuonGEMDigi_cfi.py => MuonGEMDigis_cfi.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Validation/MuonGEMDigis/python/{MuonGEMDigi_cfi.py => MuonGEMDigis_cfi.py} (100%) diff --git a/Validation/MuonGEMDigis/python/MuonGEMDigi_cfi.py b/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py similarity index 100% rename from Validation/MuonGEMDigis/python/MuonGEMDigi_cfi.py rename to Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py From 559a30034022a41257eedd3792a2e5a14511eae2 Mon Sep 17 00:00:00 2001 From: Geonmo Date: Thu, 7 Nov 2013 17:56:11 +0900 Subject: [PATCH 41/45] Modify test file to use cfi --- .../MuonGEMDigis/python/MuonGEMDigis_cfi.py | 9 --------- .../MuonGEMDigis/test/MuonGEMDigi_cfg.py | 19 +++++++------------ 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py b/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py index 7b46902d3b0e6..de97ea408d8ee 100644 --- a/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py +++ b/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py @@ -1,17 +1,8 @@ import FWCore.ParameterSet.Config as cms -from DQMServices.Components.DQMEnvironment_cfi import * -from DQMServices.Examples.test.ConverterTester_cfi import * - - -DQMStore = cms.Service("DQMStore") - -dqmSaver.convention = 'Offline' -dqmSaver.workflow = '/MuonGEMDigisV/Workflow/DIGI' from Validation.MuonGEMDigis.simTrackMatching_cfi import SimTrackMatching - gemDigiValidation = cms.EDAnalyzer('MuonGEMDigis', outputFile = cms.string('valid.root'), stripLabel= cms.InputTag('simMuonGEMDigis'), diff --git a/Validation/MuonGEMDigis/test/MuonGEMDigi_cfg.py b/Validation/MuonGEMDigis/test/MuonGEMDigi_cfg.py index 73bd487bbad2d..492d3ab5c4879 100644 --- a/Validation/MuonGEMDigis/test/MuonGEMDigi_cfg.py +++ b/Validation/MuonGEMDigis/test/MuonGEMDigi_cfg.py @@ -48,8 +48,9 @@ process.source = cms.Source("PoolSource", # replace 'myfile.root' with the source file you want to use fileNames = cms.untracked.vstring( - 'file:/pnfs/user/geonmo/CMSSW_6_2_0_SLHC1/src/Validation/MuonGEMDigis/data/out_digi_2.root' - ) +# 'file:/pnfs/user/geonmo/CMSSW_6_2_0_SLHC1/src/Validation/MuonGEMDigis/data/out_digi_2.root' + 'file:/pnfs/user/unclok/digi/4954.uosaf0008.sscc.uos.ac.kr/out_sim.root' + ) ) process.o1 = cms.OutputModule("PoolOutputModule", @@ -58,17 +59,11 @@ ) from Validation.MuonGEMDigis.simTrackMatching_cfi import SimTrackMatching - -process.demo = cms.EDAnalyzer('MuonGEMDigis', - outputFile = cms.string('valid.root'), - stripLabel= cms.InputTag('simMuonGEMDigis'), - cscPadLabel = cms.InputTag('simMuonGEMCSCPadDigis'), - cscCopadLabel = cms.InputTag('simMuonGEMCSCPadDigis','Coincidence'), - simInputLabel = cms.untracked.string('g4SimHits'), - simTrackMatching = SimTrackMatching +process.load('Validation.MuonGEMDigis.MuonGEMDigis_cfi') +process.gemDigiValidation.outputFile= cms.string('valid.root') +process.gemDigiValidation.simTrackMatching = SimTrackMatching -) -process.p = cms.Path(process.demo*process.MEtoEDMConverter) +process.p = cms.Path(process.gemDigiValidation*process.MEtoEDMConverter) process.outpath = cms.EndPath(process.o1) From ac68dd88bba3d318c8a0b60f0baef206cfa273c9 Mon Sep 17 00:00:00 2001 From: Geonmo Date: Thu, 7 Nov 2013 18:29:42 +0900 Subject: [PATCH 42/45] fix typo --- SLHCUpgradeSimulations/Configuration/python/gemCustoms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py b/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py index 932c869fcf6fc..53eb8e60b8eb9 100644 --- a/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py @@ -63,7 +63,7 @@ def customise_DQM(process): def customise_Validation(process): #process.load('Validation.MuonGEMDigis.SimTrackMatching_cfi') - process.load('Validation.MuonGEMDigis.MuonGEMDigi_cfi') + process.load('Validation.MuonGEMDigis.MuonGEMDigis_cfi') #process.gemDigiValidation.simTrackMatching= process.SimTrackMatching process.globalValidation += cms.Sequence(process.gemDigiValidation) From 8a4c3e0a0b3372cd8f7ad6e43a967cd970f78137 Mon Sep 17 00:00:00 2001 From: Geonmo Date: Fri, 8 Nov 2013 00:24:38 +0900 Subject: [PATCH 43/45] Add digi validation step on gemCustoms.py using cmsDriver.py --- .../Configuration/python/gemCustoms.py | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py b/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py index 53eb8e60b8eb9..bd7c02c59f708 100644 --- a/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py +++ b/SLHCUpgradeSimulations/Configuration/python/gemCustoms.py @@ -15,9 +15,10 @@ def customise(process): process=customise_DQM(process) if hasattr(process,'dqmHarvesting'): process=customise_harvesting(process) - if hasattr(process,'validation_step'): - process=customise_Validation(process) - + if hasattr( process,'prevalidation_step') and not hasattr(process,'reconstruction') : + process=customise_DigiPreValidation(process) + if hasattr(process,'validation_step') and not hasattr(process,'reconstruction'): + process=customise_DigiValidation(process) return process def customise_DigiToRaw(process): @@ -61,13 +62,15 @@ def customise_L1Emulator(process): def customise_DQM(process): return process -def customise_Validation(process): - #process.load('Validation.MuonGEMDigis.SimTrackMatching_cfi') - process.load('Validation.MuonGEMDigis.MuonGEMDigis_cfi') - #process.gemDigiValidation.simTrackMatching= process.SimTrackMatching - process.globalValidation += cms.Sequence(process.gemDigiValidation) - +def customise_DigiPreValidation(process): + process.prevalidation = cms.Sequence(process.hltassociation) + return process +def customise_DigiValidation(process): + process.load('Validation.MuonGEMDigis.MuonGEMDigis_cfi') + process.validation = cms.Sequence( process.gemDigiValidation ) + process.validation_step = cms.EndPath(process.validation) + process = scheduleOrdering(process) return process def customise_harvesting(process): @@ -77,7 +80,6 @@ def customise_Reco(process): process.load('RecoLocalMuon.GEMRecHit.gemRecHits_cfi') process.gemRecHits.gemDigiLabel = cms.InputTag("simMuonGEMDigis") process.muonlocalreco += process.gemRecHits - process=outputCustoms(process) return process @@ -93,3 +95,11 @@ def outputCustoms(process): getattr(process,b).outputCommands.append('keep *_gemRecHits_*_*') return process + +def scheduleOrdering(process): + process.schedule = cms.Schedule() + for path in process.paths : + process.schedule.append(process.paths.get(path)) + for endpath in process.endpaths : + process.schedule.append( process.endpaths.get(endpath) ) + return process From 6edf62df4249d286767c2f5366cbdb5b93bb7c22 Mon Sep 17 00:00:00 2001 From: Geonmo Date: Fri, 8 Nov 2013 00:27:13 +0900 Subject: [PATCH 44/45] fix hard coding about Pt and eta. --- Validation/MuonGEMDigis/interface/GEMTrackMatch.h | 4 +++- Validation/MuonGEMDigis/interface/MuonGEMDigis.h | 2 +- Validation/MuonGEMDigis/plugins/MuonGEMDigis.cc | 6 +++--- Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py | 3 +++ Validation/MuonGEMDigis/src/GEMTrackMatch.cc | 9 +++++---- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Validation/MuonGEMDigis/interface/GEMTrackMatch.h b/Validation/MuonGEMDigis/interface/GEMTrackMatch.h index 2701204866223..ddf1537e112da 100644 --- a/Validation/MuonGEMDigis/interface/GEMTrackMatch.h +++ b/Validation/MuonGEMDigis/interface/GEMTrackMatch.h @@ -25,7 +25,7 @@ class GEMTrackMatch { public: - GEMTrackMatch(DQMStore* , std::string , edm::ParameterSet ); + GEMTrackMatch(DQMStore* , std::string , edm::ParameterSet, double, double, double ); ~GEMTrackMatch(); void analyze(const edm::Event& e, const edm::EventSetup&); @@ -89,6 +89,8 @@ class GEMTrackMatch edm::Handle sim_vertices; float minPt_; + float minEta_; + float maxEta_; float radiusCenter_, chamberHeight_; diff --git a/Validation/MuonGEMDigis/interface/MuonGEMDigis.h b/Validation/MuonGEMDigis/interface/MuonGEMDigis.h index c05ad4c72e0c7..aba4fdd91e802 100644 --- a/Validation/MuonGEMDigis/interface/MuonGEMDigis.h +++ b/Validation/MuonGEMDigis/interface/MuonGEMDigis.h @@ -64,7 +64,7 @@ class MuonGEMDigis : public edm::EDAnalyzer //edm::ParameterSet cfg_; - float minPt_; + //float minPt_; float radiusCenter_, chamberHeight_; diff --git a/Validation/MuonGEMDigis/plugins/MuonGEMDigis.cc b/Validation/MuonGEMDigis/plugins/MuonGEMDigis.cc index 3da46b71a8c6d..ebba590916ff7 100644 --- a/Validation/MuonGEMDigis/plugins/MuonGEMDigis.cc +++ b/Validation/MuonGEMDigis/plugins/MuonGEMDigis.cc @@ -88,8 +88,6 @@ MuonGEMDigis::MuonGEMDigis(const edm::ParameterSet& ps) { dbe_ = edm::Service().operator->(); dbe_->setCurrentFolder("MuonGEMDigisV/GEMDigiTask"); - minPt_= ps.getUntrackedParameter("minPt", 5.); - //cfg_= ps.getParameterSet("simTrackMatching"); outputFile_ = ps.getParameter("outputFile"); //now do what ever initialization is needed @@ -98,7 +96,9 @@ MuonGEMDigis::MuonGEMDigis(const edm::ParameterSet& ps) theGEMStripDigiValidation = new GEMStripDigiValidation(dbe_, ps.getParameter("stripLabel")); theGEMCSCPadDigiValidation = new GEMCSCPadDigiValidation(dbe_, ps.getParameter("cscPadLabel")); theGEMCSCCoPadDigiValidation = new GEMCSCCoPadDigiValidation(dbe_, ps.getParameter("cscCopadLabel")); - theGEMTrackMatch = new GEMTrackMatch(dbe_, ps.getUntrackedParameter("simInputLabel", "g4SimHits") ,ps.getParameterSet("simTrackMatching")); + theGEMTrackMatch = new GEMTrackMatch(dbe_, ps.getUntrackedParameter("simInputLabel", "g4SimHits"), + ps.getParameterSet("simTrackMatching"),ps.getUntrackedParameter("minPt",5.), + ps.getUntrackedParameter("minEta",1.55), ps.getUntrackedParameter("maxPt",2.18) ); diff --git a/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py b/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py index de97ea408d8ee..cd1b1e37fc1dc 100644 --- a/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py +++ b/Validation/MuonGEMDigis/python/MuonGEMDigis_cfi.py @@ -9,5 +9,8 @@ cscPadLabel = cms.InputTag('simMuonGEMCSCPadDigis'), cscCopadLabel = cms.InputTag('simMuonGEMCSCPadDigis','Coincidence') , simInputLabel = cms.untracked.string('g4SimHits'), + minPt = cms.untracked.double(5.), + maxEta = cms.untracked.double(2.18), + minEta = cms.untracked.double(1.55), simTrackMatching = SimTrackMatching ) diff --git a/Validation/MuonGEMDigis/src/GEMTrackMatch.cc b/Validation/MuonGEMDigis/src/GEMTrackMatch.cc index 1b352aaa0ec3d..dfa863ae91b72 100644 --- a/Validation/MuonGEMDigis/src/GEMTrackMatch.cc +++ b/Validation/MuonGEMDigis/src/GEMTrackMatch.cc @@ -19,15 +19,16 @@ struct MySimTrack -GEMTrackMatch::GEMTrackMatch(DQMStore* dbe, std::string simInputLabel , edm::ParameterSet cfg ) +GEMTrackMatch::GEMTrackMatch(DQMStore* dbe, std::string simInputLabel , edm::ParameterSet cfg , double minPt, double minEta, double maxEta) { - //theEff_eta_dg[0] = dbe_->book1D("eff_eta_track_dg_gem_l1", "Eff. for a SimTrack to have an associated GEM Digi in l2;SimTrack |#eta|;Eff.", 140,1.5,2.2); cfg_= cfg; simInputLabel_= simInputLabel; dbe_= dbe; - + minPt_ = minPt; + minEta_ = minEta; + maxEta_ = maxEta; buildLUT(); @@ -96,7 +97,7 @@ bool GEMTrackMatch::isSimTrackGood(const SimTrack &t) if (std::abs(t.type()) != 13) return false; // only interested in direct muon simtracks if (t.momentum().pt() < 5 ) return false; float eta = fabs(t.momentum().eta()); - if (eta > 2.18 || eta < 1.55) return false; // no GEMs could be in such eta + if (eta > maxEta_ || eta < minEta_ ) return false; // no GEMs could be in such eta return true; } From d7a3ff92b1aaca5ef2d68487b08da7bb2b75e73d Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Fri, 22 Nov 2013 22:34:11 +0900 Subject: [PATCH 45/45] Update FWItemMuonAccessors.cc --- Fireworks/Muons/plugins/FWItemMuonAccessors.cc | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Fireworks/Muons/plugins/FWItemMuonAccessors.cc b/Fireworks/Muons/plugins/FWItemMuonAccessors.cc index 32c87b5b549f9..aa0af5dc8221a 100644 --- a/Fireworks/Muons/plugins/FWItemMuonAccessors.cc +++ b/Fireworks/Muons/plugins/FWItemMuonAccessors.cc @@ -8,7 +8,6 @@ // // Original Author: Giulio Eulisse // Created: Thu Feb 18 15:19:44 EDT 2008 -// $Id: FWItemMuonAccessors.cc,v 1.6 2010/06/11 08:21:07 mccauley Exp $ // $Id: FWItemMuonAccessors.cc,v 1.7 2010/06/18 12:44:05 yana Exp $ // $Id: FWItemMuonAccessors.cc,v 1.8 2013/10/10 22:17:00 YusangKim$ // @@ -59,17 +58,11 @@ REGISTER_TEMPLATE_FWITEMACCESSOR(CSCStripDigiAccessor, CSCStripDigiCollection, " typedef FWItemMuonDigiAccessor RPCDigiAccessor; REGISTER_TEMPLATE_FWITEMACCESSOR(RPCDigiAccessor, RPCDigiCollection, "RPCDigiCollectionAccessor"); +typedef FWItemMuonDigiAccessor GEMDigiAccessor; +REGISTER_TEMPLATE_FWITEMACCESSOR(GEMDigiAccessor, GEMDigiCollection, "GEMDigiCollectionAccessor"); typedef FWItemMuonDigiAccessor CSCRPCDigiAccessor; REGISTER_TEMPLATE_FWITEMACCESSOR(CSCRPCDigiAccessor, CSCRPCDigiCollection, "CSCRPCDigiCollectionAccessor"); -//============================================================================== - -#include "DataFormats/GEMDigi/interface/GEMDigiCollection.h" -#include "DataFormats/GEMRecHit/interface/GEMRecHitCollection.h" - -typedef FWItemMuonDigiAccessor GEMDigiAccessor; -REGISTER_TEMPLATE_FWITEMACCESSOR(GEMDigiAccessor, GEMDigiCollection, "GEMDigiCollectionAccessor"); - typedef FWItemMuonDigiAccessor GEMCSCPadDigiAccessor; REGISTER_TEMPLATE_FWITEMACCESSOR(GEMCSCPadDigiAccessor, GEMCSCPadDigiCollection, "GEMCSCPadDigiCollectionAccessor");