#ifndef MSLayersKeeper_H
#define MSLayersKeeper_H

class DetLayer;
#include "FWCore/Utilities/interface/Visibility.h"

#include "RecoTracker/TkMSParametrization/interface/MSLayer.h"
#include "MSLayersAtAngle.h"
#include "FWCore/Framework/interface/EventSetup.h"

class dso_hidden MSLayersKeeper {
public:
  virtual ~MSLayersKeeper() {}
  virtual MSLayer layer(const DetLayer* dl) const { return MSLayer(dl, DataX0(this)); }
  virtual const MSLayersAtAngle& layers(float cotTheta) const = 0;

protected:
  typedef MSLayer::DataX0 DataX0;
  static const DataX0& getDataX0(const MSLayer& l) { return l.theX0Data; }
  static void setDataX0(MSLayer& l, const DataX0& x0Data) { l.theX0Data = x0Data; }
};

#endif
