Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/Common/interface/TestHandle.h"
#include "DataFormats/Provenance/interface/ProductID.h"
#include "DataFormats/TrackerRecHit2D/interface/OmniClusterRef.h"
#include <cassert>

int strip() {
  typedef edm::Ref<edmNew::DetSetVector<SiPixelCluster>, SiPixelCluster> ClusterPixelRef;
  typedef edm::Ref<edmNew::DetSetVector<SiStripCluster>, SiStripCluster> ClusterStripRef;

  using Coll = edmNew::DetSetVector<SiStripCluster>;

  Coll coll;
  edm::TestHandle<Coll> collH(&coll, edm::ProductID(1, 1));

  typedef Coll::FastFiller FF;

  {
    FF ff(coll, 1);
    ff.push_back(SiStripCluster());
    ff.push_back(SiStripCluster());
    ff.push_back(SiStripCluster());
    ff.push_back(SiStripCluster());
  }

  ClusterStripRef sref = edmNew::makeRefTo(collH, &coll.data()[2]);

  OmniClusterRef oref(sref);
  assert(oref.isValid());
  assert(oref.index() == 2);
  assert(oref.isStrip());
  assert(!oref.isPixel());
  assert(oref.subCluster() == 0);

  OmniClusterRef oref2(sref, 3);
  OmniClusterRef oref3(sref, 3);
  assert(oref2.isValid());
  assert(oref2.index() == 2);
  assert(oref2.isStrip());
  assert(!oref2.isPixel());
  assert(oref2.subCluster() == 3);
  assert(!(oref2 == oref));
  assert((oref2 == oref3));

  return 0;
}

int pixel() {
  typedef edm::Ref<edmNew::DetSetVector<SiPixelCluster>, SiPixelCluster> ClusterPixelRef;
  typedef edm::Ref<edmNew::DetSetVector<SiStripCluster>, SiStripCluster> ClusterStripRef;

  using Coll = edmNew::DetSetVector<SiPixelCluster>;

  Coll coll;
  edm::TestHandle<Coll> collH(&coll, edm::ProductID(1, 1));

  typedef Coll::FastFiller FF;

  {
    FF ff(coll, 1);
    ff.push_back(SiPixelCluster());
    ff.push_back(SiPixelCluster());
    ff.push_back(SiPixelCluster());
    ff.push_back(SiPixelCluster());
  }

  ClusterPixelRef sref = edmNew::makeRefTo(collH, &coll.data()[2]);

  OmniClusterRef oref(sref);
  assert(oref.isValid());
  assert(oref.index() == 2);
  assert(!oref.isStrip());
  assert(oref.isPixel());
  assert(oref.subCluster() == 0);

  OmniClusterRef oref2(sref, 3);
  OmniClusterRef oref3(sref, 3);
  assert(oref2.isValid());
  assert(oref2.index() == 2);
  assert(!oref2.isStrip());
  assert(oref2.isPixel());
  assert(oref2.subCluster() == 3);
  assert(!(oref2 == oref));
  assert((oref2 == oref3));

  return 0;
}

int main() { return strip() + pixel(); }