ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/interface/HitPatternReader.h
Revision: 1.1
Committed: Thu Oct 16 16:17:17 2008 UTC (16 years, 6 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_008pre2, Mit_008pre1, Mit_006b, Mit_006a, Mit_006, Mit_005
Log Message:
Moved HitPattern parsing to a seperate class with more checks and now compatible with fixed hit layer mask format

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: FillerTracks.h,v 1.16 2008/10/13 10:41:36 bendavid Exp $
3 //
4 // HitPatternReader
5 //
6 // Helper class to translate track hits from the format they are stored in within reco::HitPattern
7 // to the corresponding mithep::Track::EHitLayer
8 //
9 // Authors: J.Bendavid
10 //--------------------------------------------------------------------------------------------------
11
12 #ifndef MITPROD_TREEFILLER_HITPATTERNREADER_H
13 #define MITPROD_TREEFILLER_HITPATTERNREADER_H
14
15 #include <map>
16 #include "FWCore/MessageLogger/interface/MessageLogger.h"
17 #include "MitAna/DataTree/interface/Track.h"
18
19
20 namespace mithep
21 {
22 class HitPatternReader
23 {
24 public:
25 HitPatternReader() : layerMask_(0xFFFFFFFC) { InitLayerMap(); }
26 virtual ~HitPatternReader() { layerMap_.clear(); }
27
28 mithep::Track::EHitLayer Layer(const uint32_t &hit) const;
29
30 protected:
31 void InitLayerMap();
32
33 const uint32_t layerMask_; //needed for bitwise operations
34 std::map<uint32_t,mithep::Track::EHitLayer> layerMap_; //hitlayer bitmap map
35
36 };
37 }
38
39 //--------------------------------------------------------------------------------------------------
40 inline mithep::Track::EHitLayer mithep::HitPatternReader::Layer(const uint32_t &hit) const
41 {
42 std::map<uint32_t,mithep::Track::EHitLayer>::const_iterator iter
43 = layerMap_.find(hit & layerMask_);
44
45 if (iter != layerMap_.end())
46 return iter->second;
47 else throw edm::Exception(edm::errors::Configuration, "HitPatternReader::Layer()\n")
48 << "Error! Layer not found corresponding to hit pattern (" << hit << "." << std::endl;
49 }
50 #endif