//<<<<<< INCLUDES                                                       >>>>>>

#include "Utilities/Configuration/interface/Architecture.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEventDataProxy.h"
#include "Visualisation/CustomTracker/interface/VisCuTkTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTrackerSelectionTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkSlThetaPhiTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkSlRecTracksTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkSlSimTracksTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEvTrackerTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEvRecHitsTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEvRecTracksTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEvSimHitsTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkEvSimTracksTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkMapTrackerTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkMapRecHitsTwig.h"
#include "Visualisation/CustomTracker/interface/VisCuTkMapSimHitsTwig.h"
#include "Visualisation/CustomTracker/interface/xtypeinfo.h"
#include "Visualisation/CobraVisBase/interface/xtypeinfo.h"
#include "Ig_Framework/IgObjectBrowser/interface/IgPluginDef.h"
#include "Ig_Framework/IgObjectBrowser/interface/IgExtensionDB.h"

//<<<<<< PRIVATE DEFINES                                                >>>>>>
//<<<<<< PRIVATE CONSTANTS                                              >>>>>>
//<<<<<< PRIVATE TYPES                                                  >>>>>>

class CustomTrackerPlugin : public IgPluginDef
{
public:
    virtual void	query (void);
    virtual void	attach (void);
};

//<<<<<< PRIVATE VARIABLE DEFINITIONS                                   >>>>>>
//<<<<<< PUBLIC VARIABLE DEFINITIONS                                    >>>>>>
//<<<<<< CLASS STRUCTURE INITIALIZATION                                 >>>>>>

DEFINE_IGUANA_PLUGIN (CustomTrackerPlugin);
XTYPEINFO_DEF_1 (VisCuTkTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTrackerSelectionTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkSlThetaPhiTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkSlRecTracksTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkSlSimTracksTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkEvTrackerTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkEvRecHitsTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkEvRecTracksTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkEvSimHitsTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkEvSimTracksTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkMapTrackerTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkMapRecHitsTwig, EventObserverTwig, false);
XTYPEINFO_DEF_1 (VisCuTkMapSimHitsTwig, EventObserverTwig, false);

//<<<<<< PRIVATE FUNCTION DEFINITIONS                                   >>>>>>
//<<<<<< PUBLIC FUNCTION DEFINITIONS                                    >>>>>>
//<<<<<< MEMBER FUNCTION DEFINITIONS                                    >>>>>>

void
CustomTrackerPlugin::query (void)
{
    IgExtensionDB::Def<VisCuTkEventDataProxy>::declare (this);
}

void
CustomTrackerPlugin::attach (void)
{
    IgExtensionDB::Def<VisCuTkEventDataProxy>::installFactory (this);
}
