logDetail( "Event collection for asset '" + asset_id.getName() + "', state dim. '" + _state_dim_name  + " is null or has no events." );
if ( _logger.isDetailEnabled() ) _logger.detail( "Event collection for asset '" + asset_id.getName() + "', state dim. '" + _state_dim_name + " is null or has no events." );
    double[][] getThreatTransitionMatrix( AssetID asset_id,                                          long start_time,                                          long end_time )            throws BelievabilityException    {        // See the extensive comments in EventInstanceCollection's        // method getTransitionMatrix() for the gorey details of how        // this is computed.        //        // First, get the event collection object for this asset        // instance so we can see how many *different* events exist.        //        EventInstanceCollection event_collection                = getEventInstanceCollection( asset_id );        // The nature of the getEventInstanceCollection() code should        // never result in a NULL being returned, but it never hurts        // to check (it is supposed to create the set when it finds        // there is none).  Also, if there are no events, then the        // probability due to threats should be zero.  However, rather        // than couting on that, we will assume that the absence of a        // threat means that the "threat transition" effect is to not        // change state, so we return the indentity matrix.        //        //        if (( event_collection == null )            || ( event_collection.getNumEvents() < 1 ))        {            logDetail( "Event collection for asset '" + asset_id.getName()                       + "', state dim. '"                      + _state_dim_name  + " is null or has no events." );            double[][] probs = new double[_possible_states.length]                    [_possible_states.length];                        for ( int i = 0; i < _possible_states.length; i++ )                probs[i][i] = 1.0;                        return probs;        } // if no threats acting on this asset state dimension        logDetail( "Event collection for asset '" + asset_id.getName()                   + "', state dim. '"                  + _state_dim_name + "'\n"                  + event_collection.toString() );        // All the hard work is done in here.        //        return event_collection.getTransitionMatrix( start_time,                                                     end_time );            } // method getThreatTransitionMatrix