CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Attributes
PreshowerClusterProducer Class Reference

#include <PreshowerClusterProducer.h>

Inheritance diagram for PreshowerClusterProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Types

typedef math::XYZPoint Point
 
- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 

Public Member Functions

 PreshowerClusterProducer (const edm::ParameterSet &ps)
 
virtual void produce (edm::Event &evt, const edm::EventSetup &es)
 
void set (const edm::EventSetup &es)
 
 ~PreshowerClusterProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Attributes

double alpha0_
 
double alpha1_
 
double alpha2_
 
double alpha3_
 
std::string assocSClusterCollection_
 
PreshowerClusterAlgo::DebugLevel debugL
 
edm::InputTag endcapSClusterProducer_
 
edm::ESHandle< ESChannelStatusesChannelStatus_
 
edm::ESHandle
< ESEEIntercalibConstants
esEEInterCalib_
 
edm::ESHandle< ESGainesgain_
 
edm::ESHandle< ESMIPToGeVConstantesMIPToGeV_
 
double etThresh_
 
double gamma0_
 
double gamma1_
 
double gamma2_
 
double gamma3_
 
double mip_
 
int nEvt_
 
PreshowerClusterAlgopresh_algo
 
float preshClustECut
 
std::string preshClusterCollectionX_
 
std::string preshClusterCollectionY_
 
edm::InputTag preshHitProducer_
 
int preshNclust_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 20 of file PreshowerClusterProducer.h.

Member Typedef Documentation

Definition at line 24 of file PreshowerClusterProducer.h.

Constructor & Destructor Documentation

PreshowerClusterProducer::PreshowerClusterProducer ( const edm::ParameterSet ps)
explicit

Definition at line 49 of file PreshowerClusterProducer.cc.

References edm::ParameterSet::getParameter(), PreshowerClusterAlgo::pDEBUG, PreshowerClusterAlgo::pERROR, and PreshowerClusterAlgo::pINFO.

49  {
50 
51  // use configuration file to setup input/output collection names
52  preshHitProducer_ = ps.getParameter<edm::InputTag>("preshRecHitProducer");
53 
54  // Name of a SuperClusterCollection to make associations:
55  endcapSClusterProducer_ = ps.getParameter<edm::InputTag>("endcapSClusterProducer");
56 
57  // Output collections:
58  preshClusterCollectionX_ = ps.getParameter<std::string>("preshClusterCollectionX");
59  preshClusterCollectionY_ = ps.getParameter<std::string>("preshClusterCollectionY");
60  preshNclust_ = ps.getParameter<int>("preshNclust");
61 
62  etThresh_ = ps.getParameter<double>("etThresh");
63 
64  assocSClusterCollection_ = ps.getParameter<std::string>("assocSClusterCollection");
65 
66  produces< reco::PreshowerClusterCollection >(preshClusterCollectionX_);
67  produces< reco::PreshowerClusterCollection >(preshClusterCollectionY_);
68  produces< reco::SuperClusterCollection >(assocSClusterCollection_);
69 
70  float preshStripECut = ps.getParameter<double>("preshStripEnergyCut");
71  int preshSeededNst = ps.getParameter<int>("preshSeededNstrip");
72  preshClustECut = ps.getParameter<double>("preshClusterEnergyCut");
73 
74  // The debug level
75  std::string debugString = ps.getParameter<std::string>("debugLevel");
76  if (debugString == "DEBUG") debugL = PreshowerClusterAlgo::pDEBUG;
77  else if (debugString == "INFO") debugL = PreshowerClusterAlgo::pINFO;
79 
80  presh_algo = new PreshowerClusterAlgo(preshStripECut,preshClustECut,preshSeededNst,debugL);
81 
82  nEvt_ = 0;
83 
84 }
T getParameter(std::string const &) const
PreshowerClusterAlgo::DebugLevel debugL
PreshowerClusterAlgo * presh_algo
PreshowerClusterProducer::~PreshowerClusterProducer ( )

Definition at line 87 of file PreshowerClusterProducer.cc.

87  {
88  delete presh_algo;
89 }
PreshowerClusterAlgo * presh_algo

Member Function Documentation

void PreshowerClusterProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
virtual

Implements edm::EDProducer.

Definition at line 92 of file PreshowerClusterProducer.cc.

References edm::SortedCollection< T, SORT >::begin(), gather_cfg::cout, DetId::Ecal, EcalPreshower, edm::SortedCollection< T, SORT >::end(), reco::CaloCluster::energy(), ESCondObjectContainer< T >::find(), geometry, edm::EventSetup::get(), edm::Event::getByLabel(), ESCondObjectContainer< T >::getMap(), i, PreshowerClusterAlgo::pDEBUG, PreshowerClusterAlgo::pINFO, point, edm::Handle< T >::product(), edm::PtrVector< T >::push_back(), edm::Event::put(), reco::PreshowerCluster::setBCRef(), reco::SuperCluster::setPreshowerPlanesStatus(), funct::sin(), edm::SortedCollection< T, SORT >::size(), X, and Gflash::Z.

92  {
93 
96 
97  // get the ECAL geometry:
99  es.get<CaloGeometryRecord>().get(geoHandle);
100 
101  // retrieve ES-EE intercalibration constants and channel status
102  set(es);
103  const ESChannelStatus *channelStatus = esChannelStatus_.product();
104 
105  const CaloSubdetectorGeometry *geometry = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
106  const CaloSubdetectorGeometry *& geometry_p = geometry;
107 
108  // create auto_ptr to a PreshowerClusterCollection
109  std::auto_ptr< reco::PreshowerClusterCollection > clusters_p1(new reco::PreshowerClusterCollection);
110  std::auto_ptr< reco::PreshowerClusterCollection > clusters_p2(new reco::PreshowerClusterCollection);
111  // create new collection of corrected super clusters
112  std::auto_ptr< reco::SuperClusterCollection > superclusters_p(new reco::SuperClusterCollection);
113 
114  CaloSubdetectorTopology * topology_p=0;
115  if (geometry)
116  topology_p = new EcalPreshowerTopology(geoHandle);
117 
118  // fetch the product (pSuperClusters)
119  evt.getByLabel(endcapSClusterProducer_, pSuperClusters);
120  const reco::SuperClusterCollection* SClusts = pSuperClusters.product();
121  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout <<"### Total # Endcap Superclusters: " << SClusts->size() << std::endl;
122 
123  // fetch the product (RecHits)
124  evt.getByLabel( preshHitProducer_, pRecHits);
125  // pointer to the object in the product
126  const EcalRecHitCollection* rechits = pRecHits.product(); // EcalRecHitCollection hit_collection = *rhcHandle;
127  if ( debugL == PreshowerClusterAlgo::pDEBUG ) std::cout << "PreshowerClusterProducerInfo: ### Total # of preshower RecHits: "
128  << rechits->size() << std::endl;
129 
130  // make the map of rechits:
131  std::map<DetId, EcalRecHit> rechits_map;
133  for (it = rechits->begin(); it != rechits->end(); it++) {
134  // remove bad ES rechits
135  if (it->recoFlag()==14 || (it->recoFlag()<=10 && it->recoFlag()>=5)) continue;
136  //Make the map of DetID, EcalRecHit pairs
137  rechits_map.insert(std::make_pair(it->id(), *it));
138  }
139  // The set of used DetID's for a given event:
140  std::set<DetId> used_strips;
141  used_strips.clear();
142 
143  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << "PreshowerClusterProducerInfo: ### rechits_map of size "
144  << rechits_map.size() <<" was created!" << std::endl;
145 
146  reco::PreshowerClusterCollection clusters1, clusters2; // output collection of corrected PCs
147  reco::SuperClusterCollection new_SC; // output collection of corrected SCs
148 
149  if ( debugL == PreshowerClusterAlgo::pDEBUG ) std::cout << " Making a cycle over Superclusters ..." << std::endl;
150  //make cycle over super clusters
151  reco::SuperClusterCollection::const_iterator it_super;
152  int isc = 0;
153  for ( it_super=SClusts->begin(); it_super!=SClusts->end(); it_super++ ) {
154  float e1=0;
155  float e2=0;
156  float deltaE=0;
158  ++isc;
159 
160  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << " superE = " << it_super->energy() << " superETA = " << it_super->eta()
161  << " superPHI = " << it_super->phi() << std::endl;
162  if ( debugL == PreshowerClusterAlgo::pINFO ) std::cout << " This SC contains " << it_super->clustersSize() << " BCs" << std::endl;
163 
164  int nBC = 0;
165  int condP1 = 1; // 0: dead channel; 1: active channel
166  int condP2 = 1;
167  reco::CaloCluster_iterator bc_iter = it_super->clustersBegin();
168  for ( ; bc_iter !=it_super->clustersEnd(); ++bc_iter ) {
169  if (geometry) {
170 
171  // Get strip position at intersection point of the line EE - Vertex:
172  double X = (*bc_iter)->x();
173  double Y = (*bc_iter)->y();
174  double Z = (*bc_iter)->z();
175  const GlobalPoint point(X,Y,Z);
176 
177  DetId tmp1 = (dynamic_cast<const EcalPreshowerGeometry*>(geometry_p))->getClosestCellInPlane(point, 1);
178  DetId tmp2 = (dynamic_cast<const EcalPreshowerGeometry*>(geometry_p))->getClosestCellInPlane(point, 2);
179  ESDetId strip1 = (tmp1 == DetId(0)) ? ESDetId(0) : ESDetId(tmp1);
180  ESDetId strip2 = (tmp2 == DetId(0)) ? ESDetId(0) : ESDetId(tmp2);
181 
182  if (nBC == 0) {
183  if (strip1 != ESDetId(0) && strip2 != ESDetId(0)) {
184  ESChannelStatusMap::const_iterator status_p1 = channelStatus->getMap().find(strip1);
185  ESChannelStatusMap::const_iterator status_p2 = channelStatus->getMap().find(strip2);
186  if (status_p1->getStatusCode() == 1) condP1 = 0;
187  if (status_p2->getStatusCode() == 1) condP2 = 0;
188  } else if (strip1 == ESDetId(0))
189  condP1 = 0;
190  else if (strip2 == ESDetId(0))
191  condP2 = 0;
192  }
193 
195  if ( strip1 != ESDetId(0) && strip2 != ESDetId(0) ) {
196  std::cout << " Intersected preshower strips are: " << std::endl;
197  std::cout << strip1 << std::endl;
198  std::cout << strip2 << std::endl;
199  } else if ( strip1 == ESDetId(0) )
200  std::cout << " No intersected strip in plane 1 " << std::endl;
201  else if ( strip2 == ESDetId(0) )
202  std::cout << " No intersected strip in plane 2 " << std::endl;
203  }
204 
205  // Get a vector of ES clusters (found by the PreshSeeded algorithm) associated with a given EE basic cluster.
206  for (int i=0; i<preshNclust_; i++) {
207  reco::PreshowerCluster cl1 = presh_algo->makeOneCluster(strip1,&used_strips,&rechits_map,geometry_p,topology_p);
208  cl1.setBCRef(*bc_iter);
209  if (cl1.energy() > preshClustECut) {
210  clusters1.push_back(cl1);
211  e1 += cl1.energy();
212  }
213  reco::PreshowerCluster cl2 = presh_algo->makeOneCluster(strip2,&used_strips,&rechits_map,geometry_p,topology_p);
214  cl2.setBCRef(*bc_iter);
215 
216  if ( cl2.energy() > preshClustECut) {
217  clusters2.push_back(cl2);
218  e2 += cl2.energy();
219  }
220  } // end of cycle over ES clusters
221  }
222 
223  new_BC.push_back(*bc_iter);
224  nBC++;
225  } // end of cycle over BCs
226 
227  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << " For SC #" << isc-1 << ", containing " << it_super->clustersSize()
228  << " basic clusters, PreshowerClusterAlgo made "
229  << clusters1.size() << " in X plane and " << clusters2.size()
230  << " in Y plane " << " preshower clusters " << std::endl;
231 
232  // update energy of the SuperCluster
233  if(e1+e2 > 1.0e-10) {
234  // GeV to #MIPs
235  e1 = e1 / mip_;
236  e2 = e2 / mip_;
237 
238  if (condP1 == 1 && condP2 == 1) deltaE = gamma0_*(e1 + alpha0_*e2);
239  else if (condP1 == 1 && condP2 == 0) deltaE = gamma1_*(e1 + alpha1_*e2);
240  else if (condP1 == 0 && condP2 == 1) deltaE = gamma2_*(e1 + alpha2_*e2);
241  else if (condP1 == 0 && condP2 == 0) deltaE = gamma3_*(e1 + alpha3_*e2);
242  }
243 
244  //corrected Energy
245  float E = it_super->energy() + deltaE;
246 
247  if (debugL == PreshowerClusterAlgo::pDEBUG) std::cout << " Creating corrected SC " << std::endl;
248  reco::SuperCluster sc(E, it_super->position(), it_super->seed(), new_BC, deltaE);
249  if (condP1 == 1 && condP2 == 1) sc.setPreshowerPlanesStatus(0);
250  else if (condP1 == 1 && condP2 == 0) sc.setPreshowerPlanesStatus(1);
251  else if (condP1 == 0 && condP2 == 1) sc.setPreshowerPlanesStatus(2);
252  else if (condP1 == 0 && condP2 == 0) sc.setPreshowerPlanesStatus(3);
253 
254  if (sc.energy()*sin(sc.position().theta())>etThresh_)
255  new_SC.push_back(sc);
256  if (debugL <= PreshowerClusterAlgo::pINFO) std::cout << " SuperClusters energies: new E = " << sc.energy()
257  << " vs. old E =" << it_super->energy() << std::endl;
258 
259  } // end of cycle over SCs
260 
261  // copy the preshower clusters into collections and put in the Event:
262  clusters_p1->assign(clusters1.begin(), clusters1.end());
263  clusters_p2->assign(clusters2.begin(), clusters2.end());
264  // put collection of preshower clusters to the event
265  evt.put( clusters_p1, preshClusterCollectionX_ );
266  evt.put( clusters_p2, preshClusterCollectionY_ );
267  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << "Preshower clusters added to the event" << std::endl;
268 
269  // put collection of corrected super clusters to the event
270  superclusters_p->assign(new_SC.begin(), new_SC.end());
271  evt.put(superclusters_p, assocSClusterCollection_);
272  if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << "Corrected SClusters added to the event" << std::endl;
273 
274  if (topology_p)
275  delete topology_p;
276 
277  nEvt_++;
278 
279 }
const double Z[kNumberCalorimeter]
PreshowerClusterAlgo::DebugLevel debugL
int i
Definition: DBlmapReader.cc:9
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:137
const self & getMap() const
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< T >::const_iterator const_iterator
#define X(str)
Definition: MuonsGrabber.cc:49
PreshowerClusterAlgo * presh_algo
reco::PreshowerCluster makeOneCluster(ESDetId strip, HitsID *used_strips, RecHitsMap *rechits_map, const CaloSubdetectorGeometry *&geometry_p, CaloSubdetectorTopology *&topology_p)
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
edm::ESHandle< ESChannelStatus > esChannelStatus_
void setBCRef(const CaloClusterPtr &r)
DetIds of component RecHits – now inherited from CaloCluster.
const_iterator find(uint32_t rawId) const
std::vector< PreshowerCluster > PreshowerClusterCollection
collection of PreshowerCluster objects
double energy() const
cluster energy
Definition: CaloCluster.h:120
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
const_iterator end() const
void setPreshowerPlanesStatus(const uint32_t &status)
Definition: SuperCluster.h:100
Definition: DetId.h:20
const T & get() const
Definition: EventSetup.h:55
void set(const edm::EventSetup &es)
T const * product() const
Definition: Handle.h:74
std::vector< Item >::const_iterator const_iterator
ESHandle< TrackerGeometry > geometry
size_type size() const
tuple cout
Definition: gather_cfg.py:41
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
const_iterator begin() const
void PreshowerClusterProducer::set ( const edm::EventSetup es)

Definition at line 281 of file PreshowerClusterProducer.cc.

References edm::EventSetup::get(), ESEEIntercalibConstants::getAlphaHigh0(), ESEEIntercalibConstants::getAlphaHigh1(), ESEEIntercalibConstants::getAlphaHigh2(), ESEEIntercalibConstants::getAlphaHigh3(), ESEEIntercalibConstants::getAlphaLow0(), ESEEIntercalibConstants::getAlphaLow1(), ESEEIntercalibConstants::getAlphaLow2(), ESEEIntercalibConstants::getAlphaLow3(), ESGain::getESGain(), ESMIPToGeVConstant::getESValueHigh(), ESMIPToGeVConstant::getESValueLow(), ESEEIntercalibConstants::getGammaHigh0(), ESEEIntercalibConstants::getGammaHigh1(), ESEEIntercalibConstants::getGammaHigh2(), ESEEIntercalibConstants::getGammaHigh3(), ESEEIntercalibConstants::getGammaLow0(), ESEEIntercalibConstants::getGammaLow1(), ESEEIntercalibConstants::getGammaLow2(), and ESEEIntercalibConstants::getGammaLow3().

281  {
282 
283  es.get<ESGainRcd>().get(esgain_);
284  const ESGain *gain = esgain_.product();
285 
286  double ESGain = gain->getESGain();
287 
289  const ESMIPToGeVConstant *mipToGeV = esMIPToGeV_.product();
290 
291  mip_ = (ESGain == 1) ? mipToGeV->getESValueLow() : mipToGeV->getESValueHigh();
292 
294 
296  const ESEEIntercalibConstants *esEEInterCalib = esEEInterCalib_.product();
297 
298  // both planes work
299  gamma0_ = (ESGain == 1) ? esEEInterCalib->getGammaLow0() : esEEInterCalib->getGammaHigh0();
300  alpha0_ = (ESGain == 1) ? esEEInterCalib->getAlphaLow0() : esEEInterCalib->getAlphaHigh0();
301 
302  // only first plane works
303  gamma1_ = (ESGain == 1) ? esEEInterCalib->getGammaLow1() : esEEInterCalib->getGammaHigh1();
304  alpha1_ = (ESGain == 1) ? esEEInterCalib->getAlphaLow1() : esEEInterCalib->getAlphaHigh1();
305 
306  // only second plane works
307  gamma2_ = (ESGain == 1) ? esEEInterCalib->getGammaLow2() : esEEInterCalib->getGammaHigh2();
308  alpha2_ = (ESGain == 1) ? esEEInterCalib->getAlphaLow2() : esEEInterCalib->getAlphaHigh2();
309 
310  // both planes do not work
311  gamma3_ = (ESGain == 1) ? esEEInterCalib->getGammaLow3() : esEEInterCalib->getGammaHigh3();
312  alpha3_ = (ESGain == 1) ? esEEInterCalib->getAlphaLow3() : esEEInterCalib->getAlphaHigh3();
313 
314 }
Definition: ESGain.h:5
edm::ESHandle< ESGain > esgain_
float getESValueLow() const
edm::ESHandle< ESChannelStatus > esChannelStatus_
edm::ESHandle< ESMIPToGeVConstant > esMIPToGeV_
edm::ESHandle< ESEEIntercalibConstants > esEEInterCalib_
float getESGain() const
Definition: ESGain.h:11
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
float getESValueHigh() const

Member Data Documentation

double PreshowerClusterProducer::alpha0_
private

Definition at line 62 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::alpha1_
private

Definition at line 63 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::alpha2_
private

Definition at line 64 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::alpha3_
private

Definition at line 65 of file PreshowerClusterProducer.h.

std::string PreshowerClusterProducer::assocSClusterCollection_
private

Definition at line 51 of file PreshowerClusterProducer.h.

PreshowerClusterAlgo::DebugLevel PreshowerClusterProducer::debugL
private

Definition at line 71 of file PreshowerClusterProducer.h.

edm::InputTag PreshowerClusterProducer::endcapSClusterProducer_
private

Definition at line 39 of file PreshowerClusterProducer.h.

edm::ESHandle<ESChannelStatus> PreshowerClusterProducer::esChannelStatus_
private

Definition at line 56 of file PreshowerClusterProducer.h.

edm::ESHandle<ESEEIntercalibConstants> PreshowerClusterProducer::esEEInterCalib_
private

Definition at line 55 of file PreshowerClusterProducer.h.

edm::ESHandle<ESGain> PreshowerClusterProducer::esgain_
private

Definition at line 53 of file PreshowerClusterProducer.h.

edm::ESHandle<ESMIPToGeVConstant> PreshowerClusterProducer::esMIPToGeV_
private

Definition at line 54 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::etThresh_
private

Definition at line 48 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::gamma0_
private

Definition at line 58 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::gamma1_
private

Definition at line 59 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::gamma2_
private

Definition at line 60 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::gamma3_
private

Definition at line 61 of file PreshowerClusterProducer.h.

double PreshowerClusterProducer::mip_
private

Definition at line 57 of file PreshowerClusterProducer.h.

int PreshowerClusterProducer::nEvt_
private

Definition at line 35 of file PreshowerClusterProducer.h.

PreshowerClusterAlgo* PreshowerClusterProducer::presh_algo
private

Definition at line 67 of file PreshowerClusterProducer.h.

float PreshowerClusterProducer::preshClustECut
private

Definition at line 47 of file PreshowerClusterProducer.h.

std::string PreshowerClusterProducer::preshClusterCollectionX_
private

Definition at line 42 of file PreshowerClusterProducer.h.

std::string PreshowerClusterProducer::preshClusterCollectionY_
private

Definition at line 43 of file PreshowerClusterProducer.h.

edm::InputTag PreshowerClusterProducer::preshHitProducer_
private

Definition at line 38 of file PreshowerClusterProducer.h.

int PreshowerClusterProducer::preshNclust_
private

Definition at line 46 of file PreshowerClusterProducer.h.