#include "sierrachart.h" SCDLLName("BMMultiStudyScoring") /*==========================================================================*/ SCSFExport scsf_BMMultiStudyScoring(SCStudyInterfaceRef sc) { SCSubgraphRef Total = sc.Subgraph[0]; SCInputRef CustomInput1 = sc.Input[0]; SCInputRef Chart1 = sc.Input[1]; SCInputRef Study1 = sc.Input[2]; SCInputRef Study1Subgraph = sc.Input[3]; SCInputRef CustomInput2 = sc.Input[4]; SCInputRef Chart2 = sc.Input[5]; SCInputRef Study2 = sc.Input[6]; SCInputRef Study2Subgraph = sc.Input[7]; SCInputRef CustomInput3 = sc.Input[8]; SCInputRef Chart3 = sc.Input[9]; SCInputRef Study3 = sc.Input[10]; SCInputRef Study3Subgraph = sc.Input[11]; SCInputRef CustomInput4 = sc.Input[12]; SCInputRef Chart4 = sc.Input[13]; SCInputRef Study4 = sc.Input[14]; SCInputRef Study4Subgraph = sc.Input[15]; SCInputRef Factor1 = sc.Input[16]; SCInputRef Factor2 = sc.Input[17]; SCInputRef Factor3 = sc.Input[18]; SCInputRef Factor4 = sc.Input[19]; SCInputRef Study1ArrayReference = sc.Input[20]; SCInputRef Study2ArrayReference = sc.Input[21]; SCInputRef Study3ArrayReference = sc.Input[22]; SCInputRef Study4ArrayReference = sc.Input[23]; // Set configuration variables if (sc.SetDefaults) { // Set the configuration and defaults sc.GraphName = "Big Mike Multi-Study Scoring"; sc.StudyDescription = "Pure inspired genius."; //During development set this flag to 1, so the DLL can be modified. When development is completed, set it to 0 to improve performance. sc.FreeDLL = 1; sc.AutoLoop = 1; sc.CalculationPrecedence = LOW_PREC_LEVEL; Total.Name = "Score"; Total.DrawStyle = DRAWSTYLE_LINE; Total.LineWidth = 2; Total.PrimaryColor = RGB(0,0,0); CustomInput1.Name = "Using Study 1?"; CustomInput1.SetCustomInputStrings("Yes; No"); CustomInput1.SetCustomInputIndex(0); Chart1.Name = "Chart 1"; Chart1.SetChartNumber(1); Study1.Name = "Study 1"; Study1.SetStudyID(2); Study1Subgraph.Name = "Study 1 Subgraph #"; Study1Subgraph.SetSubgraphIndex(0); CustomInput2.Name = "Using Study 2?"; CustomInput2.SetCustomInputStrings("Yes; No"); CustomInput2.SetCustomInputIndex(0); Chart2.Name = "Chart 2"; Chart2.SetChartNumber(1); Study2.Name = "Study 2"; Study2.SetStudyID(3); Study2Subgraph.Name = "Study 2 Subgraph #"; Study2Subgraph.SetSubgraphIndex(0); CustomInput3.Name = "Using Study 3?"; CustomInput3.SetCustomInputStrings("Yes; No"); CustomInput3.SetCustomInputIndex(0); Chart3.Name = "Chart 3"; Chart3.SetChartNumber(1); Study3.Name = "Study 3"; Study3.SetStudyID(4); Study3Subgraph.Name = "Study 3 Subgraph #"; Study3Subgraph.SetSubgraphIndex(0); CustomInput4.Name = "Using Study 4?"; CustomInput4.SetCustomInputStrings("Yes; No"); CustomInput4.SetCustomInputIndex(0); Chart4.Name = "Chart 4"; Chart4.SetChartNumber(1); Study4.Name = "Study 4"; Study4.SetStudyID(5); Study4Subgraph.Name = "Study 4 Subgraph #"; Study4Subgraph.SetSubgraphIndex(0); Factor1.Name = "Study1 Multiplier"; Factor1.SetFloat(1.0); Factor2.Name = "Study2 Multiplier"; Factor2.SetFloat(1.0); Factor3.Name = "Study3 Multiplier"; Factor3.SetFloat(1.0); Factor4.Name = "Study4 Multiplier"; Factor4.SetFloat(1.0); return; } // Do data processing Study1ArrayReference.SetChartStudySubgraphValues(Chart1.GetChartNumber(),Study1.GetStudyID(),Study1Subgraph.GetSubgraphIndex()); SCFloatArray Study1Array; sc.GetStudyArrayFromChartUsingID(Study1ArrayReference.GetChartStudySubgraphValues(), Study1Array); Study2ArrayReference.SetChartStudySubgraphValues(Chart2.GetChartNumber(),Study2.GetStudyID(),Study2Subgraph.GetSubgraphIndex()); SCFloatArray Study2Array; sc.GetStudyArrayFromChartUsingID(Study2ArrayReference.GetChartStudySubgraphValues(), Study2Array); Study3ArrayReference.SetChartStudySubgraphValues(Chart3.GetChartNumber(),Study3.GetStudyID(),Study3Subgraph.GetSubgraphIndex()); SCFloatArray Study3Array; sc.GetStudyArrayFromChartUsingID(Study3ArrayReference.GetChartStudySubgraphValues(), Study3Array); Study4ArrayReference.SetChartStudySubgraphValues(Chart4.GetChartNumber(),Study4.GetStudyID(),Study4Subgraph.GetSubgraphIndex()); SCFloatArray Study4Array; sc.GetStudyArrayFromChartUsingID(Study4ArrayReference.GetChartStudySubgraphValues(), Study4Array); float total1 = CustomInput1.GetIndex()==1 ? 0 : Study1Array[sc.Index] > Study1Array[sc.Index-1] ? 1*Factor1.GetFloat() : Study1Array[sc.Index] == Study1Array[sc.Index-1] ? 0 : -1*Factor1.GetFloat(); float total2 = CustomInput2.GetIndex()==1 ? 0 : Study2Array[sc.Index] > Study2Array[sc.Index-1] ? 1*Factor2.GetFloat() : Study2Array[sc.Index] == Study2Array[sc.Index-1] ? 0 : -1*Factor2.GetFloat(); float total3 = CustomInput3.GetIndex()==1 ? 0 : Study3Array[sc.Index] > Study3Array[sc.Index-1] ? 1*Factor3.GetFloat() : Study3Array[sc.Index] == Study3Array[sc.Index-1] ? 0 : -1*Factor3.GetFloat(); float total4 = CustomInput4.GetIndex()==1 ? 0 : Study4Array[sc.Index] > Study4Array[sc.Index-1] ? 1*Factor4.GetFloat() : Study4Array[sc.Index] == Study4Array[sc.Index-1] ? 0 : -1*Factor4.GetFloat(); Total[sc.Index] = total1 + total2+ total3 + total4 + Total[sc.Index-1]; }