IncrementalPM/src/conformance/traceAnalysis/IncrementalTraceAnalyzer.java
public boolean analyzeTrace(XTrace trace, XAttributeMap logAttributes) {
		XLog traceAsLog=new XLogImpl(logAttributes);
		traceAsLog.add(trace);
		increaseThreadCnt();
		
		if(this.results.contains(trace)) {
			//System.out.println("Trace already known: "+TraceRepresentations.getActivitySequence(trace));
			T conformanceInformation = results.get(trace).getResult();
			//System.out.println("Using Information: "+conformanceInformation);
			//System.out.println();
			//T  = this.retrieveConformanceInformation(trace, replayResult);
			TraceAnalysisResult<T> result = new TraceAnalysisResult<T>(trace, false, conformanceInformation, results.get(trace).getReplayResult());
			double distance = this.updateConformance(result);
			//System.out.println(distance);
			return distance>this.parameter.getEpsilon();
		}
		this.totalVariants++;
		Replayer replayer = ReplayerFactory.createReplayer(this.net, traceAsLog, this.mapping, this.classifier, true, this.initialMarking, this.finalMarking);
		if(this.parameter.isApproximate())
			return approximateConformance(trace, net, logAttributes, replayer);
		else {
			PNRepResult replayResult = this.replayTraceOnLog(traceAsLog, logAttributes, replayer);
			T conformanceResult = this.retrieveConformanceInformation(trace, replayResult);
			TraceAnalysisResult<T> result = new TraceAnalysisResult<T>(trace, false, conformanceResult, replayResult);
			double distance = this.updateConformance(result);
			return distance>this.parameter.getEpsilon();		
		}
	}
/**
	 * top level entry function
	 * @param trace
	 * @param net
	 * @param logAttributes
	 * @return whether trace induces significant change on global conformance
	 */
top level entry function
@param trace
@param net
@param logAttributes
@return whether trace induces significant change on global conformance
top level entry function @param trace @param net @param logAttributes @return whether trace induces significant change on global conformance
public boolean analyzeTrace(XTrace trace, XAttributeMap logAttributes) {
		XLog traceAsLog=new XLogImpl(logAttributes);
		traceAsLog.add(trace);
		increaseThreadCnt();
		if(this.results.contains(trace)) {
			T conformanceInformation = results.get(trace).getResult();
			TraceAnalysisResult<T> result = new TraceAnalysisResult<T>(trace, false, conformanceInformation, results.get(trace).getReplayResult());
			double distance = this.updateConformance(result);
			return distance>this.parameter.getEpsilon();
		}
		this.totalVariants++;
		Replayer replayer = ReplayerFactory.createReplayer(this.net, traceAsLog, this.mapping, this.classifier, true, this.initialMarking, this.finalMarking);
		if(this.parameter.isApproximate())
			return approximateConformance(trace, net, logAttributes, replayer);
		else {
			PNRepResult replayResult = this.replayTraceOnLog(traceAsLog, logAttributes, replayer);
			T conformanceResult = this.retrieveConformanceInformation(trace, replayResult);
			TraceAnalysisResult<T> result = new TraceAnalysisResult<T>(trace, false, conformanceResult, replayResult);
			double distance = this.updateConformance(result);
			return distance>this.parameter.getEpsilon();		
		}
	}
public boolean analyzeTrace ( XTrace trace , XAttributeMap logAttributes ) { XLog traceAsLog = new XLogImpl ( logAttributes ) ; traceAsLog . add ( trace ) ; increaseThreadCnt ( ) ; if ( this . results . contains ( trace ) ) { T conformanceInformation = results . get ( trace ) . getResult ( ) ; TraceAnalysisResult < T > result = new TraceAnalysisResult < T > ( trace , false , conformanceInformation , results . get ( trace ) . getReplayResult ( ) ) ; double distance = this . updateConformance ( result ) ; return distance > this . parameter . getEpsilon ( ) ; } this . totalVariants ++ ; Replayer replayer = ReplayerFactory . createReplayer ( this . net , traceAsLog , this . mapping , this . classifier , true , this . initialMarking , this . finalMarking ) ; if ( this . parameter . isApproximate ( ) ) return approximateConformance ( trace , net , logAttributes , replayer ) ; else { PNRepResult replayResult = this . replayTraceOnLog ( traceAsLog , logAttributes , replayer ) ; T conformanceResult = this . retrieveConformanceInformation ( trace , replayResult ) ; TraceAnalysisResult < T > result = new TraceAnalysisResult < T > ( trace , false , conformanceResult , replayResult ) ; double distance = this . updateConformance ( result ) ; return distance > this . parameter . getEpsilon ( ) ; } }
top level entry function
 @param trace
 @param net
 @param logAttributes
 @return whether trace induces significant change on global conformance
top level entry function @param trace @param net @param logAttributes @return whether trace induces significant change on global conformance
//System.out.println("Trace already known: "+TraceRepresentations.getActivitySequence(trace)); //System.out.println("Using Information: "+conformanceInformation); //System.out.println(); //T  = this.retrieveConformanceInformation(trace, replayResult); //System.out.println(distance);