001package cnslab.cnsnetwork; 002import cnslab.cnsmath.*; 003import java.util.Map; 004import java.util.HashMap; 005import java.io.Serializable; 006import java.util.ArrayList; 007 008/** 009 * Used to count avalanch in the network 010 * 011 * @author Yi Dong 012 */ 013public class AvalancheCounter implements Serializable,Transmissible 014{ 015 public int IDcounter; 016 public int oldExp; 017 public int oldTrial; 018 019 AvalancheCounter(Experiment exp) 020 { 021 avalancheCounter = new ArrayList< ArrayList< Map<String, Integer> > >(exp.subExp.length); 022 for(int i=0; i < exp.subExp.length; i++) 023 { 024 ArrayList< Map<String, Integer> > tmp = new ArrayList<Map<String, Integer>>(exp.subExp[i].repetition); 025 avalancheCounter.add(i,tmp); 026 for(int j=0; j < exp.subExp[i].repetition; j++) 027 { 028 Map<String, Integer> tmp2 = new HashMap<String, Integer>(); 029 tmp.add(j,tmp2); 030 } 031 } 032// avalancheCounter = new HashMap<String, Integer>(); 033 IDcounter = 0; 034 oldExp=0; 035 oldTrial=0; 036 } 037 038// public Map<String, Integer> avalancheCounter; 039 public ArrayList< ArrayList< Map<String, Integer> > > avalancheCounter; 040 041 public void clear() 042 { 043 avalancheCounter.clear(); 044 } 045 046 /** 047 * 048 * 049 * @param anetwork 050 * @return IDcounter 051 */ 052 public int getId(ANetwork anetwork) 053 { 054 if(anetwork.trialId != oldTrial || anetwork.subExpId != oldExp) 055 { 056 IDcounter=0; 057 oldTrial = anetwork.trialId; 058 oldExp = anetwork.subExpId; 059 } 060 IDcounter++; 061 return IDcounter; 062 } 063 064 public void CountIt(ANetwork anetwork, int source, int id) 065 { 066 //anetwork.p.println("CountIt called!"); 067 String key = "S"+source+",I"+id; 068 Integer tmpInt = avalancheCounter.get(anetwork.subExpId).get(anetwork.trialId).get(key); 069 if(tmpInt == null) 070 { 071 avalancheCounter.get(anetwork.subExpId).get(anetwork.trialId).put(key, tmpInt = (new Integer(0))); 072 } 073 tmpInt = tmpInt + 1; 074 avalancheCounter.get(anetwork.subExpId).get(anetwork.trialId).put(key,tmpInt); 075 } 076}