+ // if targetChainId is specified then it is expected to be unique, so
+ // precisely one maximal chain will be added
+ maximalChainIds.add(chain.id);
+ maximalChain.add(chain);
+ maximalAlignseqs.add(as);
+ }
+ else
+ {
+ // select chains with maximal mappings to this sequence
+ if (first || as.maxscore > max)
+ {
+ // clear out old maximal mappings (if any)
+ max = as.maxscore;
+ maximalChain.clear();
+ maxChain = chain;
+ max = as.maxscore;
+ maxAlignseq = as;
+ maxChainId = chain.id;
+ first = false;
+ }
+ if (as.maxscore == max)
+ {
+ maximalChainIds.add(chain.id);
+ maximalChain.add(chain);
+ maximalAlignseqs.add(as);
+ }