// Path: src/main/java/fiji/plugin/mamut/providers/MamutSpotAnalyzerProvider.java
// @SuppressWarnings( "rawtypes" )
// public class MamutSpotAnalyzerProvider extends AbstractProvider< MamutSpotAnalyzerFactory >
// {
// 
// 	private final int nChannels;
// 
// 	public MamutSpotAnalyzerProvider( final int nChannels )
// 	{
// 		super( MamutSpotAnalyzerFactory.class );
// 		this.nChannels = nChannels;
// 	}
// 
// 	@Override
// 	public MamutSpotAnalyzerFactory getFactory( final String key )
// 	{
// 		final MamutSpotAnalyzerFactory factory = super.getFactory( key );
// 		if ( factory == null )
// 			return null;
// 
// 		factory.setNChannels( nChannels );
// 		return factory;
// 	}
// 
// 	public static void main( final String[] args )
// 	{
// 		final MamutSpotAnalyzerProvider provider = new MamutSpotAnalyzerProvider( 2 );
// 		System.out.println( provider.echo() );
// 	}
// }


import java.io.File;
import java.util.ArrayList;
import java.util.List;
import bdv.BigDataViewer;
import bdv.ViewerImgLoader;
import bdv.cache.CacheControl;
import bdv.spimdata.SpimDataMinimal;
import bdv.spimdata.WrapBasicImgLoader;
import bdv.spimdata.XmlIoSpimDataMinimal;
import bdv.tools.brightness.ConverterSetup;
import bdv.viewer.SourceAndConverter;
import fiji.plugin.mamut.providers.MamutSpotAnalyzerProvider;
import fiji.plugin.trackmate.Settings;
import fiji.plugin.trackmate.features.spot.SpotAnalyzerFactoryBase;
import fiji.plugin.trackmate.providers.EdgeAnalyzerProvider;
import fiji.plugin.trackmate.providers.SpotAnalyzerProvider;
import fiji.plugin.trackmate.providers.TrackAnalyzerProvider;
import mpicbg.spim.data.SpimDataException;
import mpicbg.spim.data.generic.sequence.AbstractSequenceDescription;
import mpicbg.spim.data.sequence.TimePoint;
import net.imglib2.RandomAccessibleInterval;
		}
		this.cache = ( ( ViewerImgLoader ) seq.getImgLoader() ).getCacheControl();
		final List< TimePoint > timepoints = seq.getTimePoints().getTimePointsOrdered();
		this.nframes = timepoints.size();

		// Image size
		final SourceAndConverter< ? > firstSource = sources.get( 0 );
		final RandomAccessibleInterval< ? > firstStack = firstSource.getSpimSource().getSource( 0, 0 );
		this.width = ( int ) firstStack.dimension( 0 );
		this.height = ( int ) firstStack.dimension( 1 );
		this.nslices = ( int ) firstStack.dimension( 2 );
		this.dx = 1f;
		this.dy = 1f;
		this.dz = 1f;
		this.dt = 1f;

		// Crop cube
		this.xstart = 0;
		this.xend = width - 1;
		this.ystart = 0;
		this.yend = height - 1;
		this.roi = null;
	}

	@Override
	public void addAllAnalyzers()
	{
		clearSpotAnalyzerFactories();

		// Analyzers specific to MaMuT.
// Path: src/main/java/fiji/plugin/mamut/providers/MamutSpotAnalyzerProvider.java
// @SuppressWarnings( "rawtypes" )
// public class MamutSpotAnalyzerProvider extends AbstractProvider< MamutSpotAnalyzerFactory >
// {
// 
// 	private final int nChannels;
// 
// 	public MamutSpotAnalyzerProvider( final int nChannels )
// 	{
// 		super( MamutSpotAnalyzerFactory.class );
// 		this.nChannels = nChannels;
// 	}
// 
// 	@Override
// 	public MamutSpotAnalyzerFactory getFactory( final String key )
// 	{
// 		final MamutSpotAnalyzerFactory factory = super.getFactory( key );
// 		if ( factory == null )
// 			return null;
// 
// 		factory.setNChannels( nChannels );
// 		return factory;
// 	}
// 
// 	public static void main( final String[] args )
// 	{
// 		final MamutSpotAnalyzerProvider provider = new MamutSpotAnalyzerProvider( 2 );
// 		System.out.println( provider.echo() );
// 	}
// }


// Path: src/main/java/fiji/plugin/mamut/SourceSettings.java
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import bdv.BigDataViewer;
import bdv.ViewerImgLoader;
import bdv.cache.CacheControl;
import bdv.spimdata.SpimDataMinimal;
import bdv.spimdata.WrapBasicImgLoader;
import bdv.spimdata.XmlIoSpimDataMinimal;
import bdv.tools.brightness.ConverterSetup;
import bdv.viewer.SourceAndConverter;
import fiji.plugin.mamut.providers.MamutSpotAnalyzerProvider;
import fiji.plugin.trackmate.Settings;
import fiji.plugin.trackmate.features.spot.SpotAnalyzerFactoryBase;
import fiji.plugin.trackmate.providers.EdgeAnalyzerProvider;
import fiji.plugin.trackmate.providers.SpotAnalyzerProvider;
import fiji.plugin.trackmate.providers.TrackAnalyzerProvider;
import mpicbg.spim.data.SpimDataException;
import mpicbg.spim.data.generic.sequence.AbstractSequenceDescription;
import mpicbg.spim.data.sequence.TimePoint;
import net.imglib2.RandomAccessibleInterval;

		}
		this.cache = ( ( ViewerImgLoader ) seq.getImgLoader() ).getCacheControl();
		final List< TimePoint > timepoints = seq.getTimePoints().getTimePointsOrdered();
		this.nframes = timepoints.size();

		// Image size
		final SourceAndConverter< ? > firstSource = sources.get( 0 );
		final RandomAccessibleInterval< ? > firstStack = firstSource.getSpimSource().getSource( 0, 0 );
		this.width = ( int ) firstStack.dimension( 0 );
		this.height = ( int ) firstStack.dimension( 1 );
		this.nslices = ( int ) firstStack.dimension( 2 );
		this.dx = 1f;
		this.dy = 1f;
		this.dz = 1f;
		this.dt = 1f;

		// Crop cube
		this.xstart = 0;
		this.xend = width - 1;
		this.ystart = 0;
		this.yend = height - 1;
		this.roi = null;
	}

	@Override
	public void addAllAnalyzers()
	{
		clearSpotAnalyzerFactories();

		// Analyzers specific to MaMuT.
		final MamutSpotAnalyzerProvider mamutSpotAnalyzerProvider = new MamutSpotAnalyzerProvider( sources.size() );