/**
  * torna la componente dell'indice dovuta agli emendamenti presentati 
  * in relazione a un atto, entro una certa data
  *
  * @param string $atto_id 
  * @param string $data 
  * @param string $em_atto_node 
  * @param string $verbose 
  * @return float
  * @author Guglielmo Celata
  */
 public static function calcolaComponenteEmendamentiPerAtto($atto_id, $data, $atto_node, $verbose = false)
 {
     // presentazione emendamenti legati all'atto
     $n_emendamenti = OppAttoHasEmendamentoPeer::countEmendamentiAttoData($atto_id, $data);
     $larghezza = self::$punteggi['emendamenti_larghezza_rilevanza'];
     $soglia = self::$punteggi['emendamenti_soglia_rilevanza'];
     // calcolo valore emendamenti presentati per atto, con soglia discendente
     // 1 + tanh(0.01*(s-x))
     // integrale indefinito è x - 100 * log(cosh(0.01*s - 0.01*x)) (Wolfram Alpha)
     // in questo modo, fino a 40 emendamenti il peso è uniforme, poi scende, fino a 400, quando
     // gli emendamenti in più non pesano niente
     // descritto in: http://trac.openpolis.it/openparlamento/wiki/NuovoIndice
     $d_punteggio = 0;
     $punteggio_em_presentati = 0;
     if ($n_emendamenti > 0 and $n_emendamenti <= $soglia) {
         $punteggio_em_presentati = self::getPunteggio('emendamenti', "presentazione", 'm') * $n_emendamenti;
     } else {
         if ($n_emendamenti > 0) {
             $punteggio_em_presentati = self::getPunteggio('emendamenti', "presentazione", 'm') * ($n_emendamenti - $larghezza * log(cosh(1.0 / $larghezza * ($soglia - $n_emendamenti))));
         }
     }
     if ($punteggio_em_presentati > 0) {
         $punteggio_em_presentati = round($punteggio_em_presentati, 2);
         if ($verbose) {
             printf("    presentazione %d emendamenti %7.2f\n", $n_emendamenti, $punteggio_em_presentati);
         }
         $d_punteggio += $punteggio_em_presentati;
     }
     if ($d_punteggio > 0) {
         if ($verbose) {
             printf("  totale emendamenti   %7.2f\n", $d_punteggio);
         }
         $emendamenti_atto_node = $atto_node->addChild('emendamenti', null, self::$opp_ns);
         $emendamenti_atto_node->addAttribute('numero', $n_emendamenti);
         $emendamenti_atto_node->addAttribute('totale', $d_punteggio);
     }
     return $d_punteggio;
 }