function [GI_Cir_Q1,GI_Cir_Q2,GI_Cir_Q3,GI_Cir_Q4,GI_Cir_Q1_Num,GI_Cir_Q2_Num,...
    GI_Cir_Q3_Num,GI_Cir_Q4_Num,GI_Cir_Seg,GI_Cir_Z,GI_Cir_Date,GI_TuL_RL,...
    ATTIVA,FIG,FIG_ENG] = report_TuL(IDcentralina,DTcatena,rTuL,m,NodoTunnelLink,toolrif,...
    unitrif,datarif,firstdata_num,Font_caption,Font_tools,siteID,DT,DT_ENG,FIG,FIG_ENG,br,...
    colonna2,colonna2bis,status,ATTIVA,activeEN,conn,FileName)

fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'report_TuL function started';
fprintf(fileID,fmt,text);

import mlreportgen.dom.*
import mlreportgen.report.*

% Make sure DOM is compilable
makeDOMCompilable()

GI_Cir_Q1 = [];
GI_Cir_Q2 = [];
GI_Cir_Q3 = [];
GI_Cir_Q4 = [];
GI_Cir_Q1_Num = [];
GI_Cir_Q2_Num = [];
GI_Cir_Q3_Num = [];
GI_Cir_Q4_Num = [];
GI_Cir_Seg = [];
GI_Cir_Z = [];
GI_Cir_Date = [];
GI_TuL_RL = [];

check = 0;
while check == 0
    if status(m,1) == 1
        if ATTIVA == 1
            ATTIVA = 0;
            testo = Paragraph('Catena non ancora installata o inattiva.');
            add(DT,testo);
            if activeEN == 1
                testo = Paragraph('Array not installed or inactive.');
                add(DT_ENG,testo);
            end
        end
        check = 1;
    elseif status(m,1) == 3
        if ATTIVA == 1
            ATTIVA = 0;
            testo = Paragraph(['Monitoraggio completato. Invitiamo a visitare la '...
                'piattaforma web per la visione dei dati storici.']);
            add(DT,testo);
            if activeEN == 1
                testo = Paragraph(['Monitoring completed. Please log into the web-based platform '...
                    'to access the complete dataset.']);
                add(DT_ENG,testo);
            end
        end
        check = 1;
    else
        [~,Segmenti,~,~,~,Antiorario] = star(IDcentralina,DTcatena,FileName);
        [dim,~] = size(Segmenti); % numero di punti per il calcolo della stella

        NODATA(m,1) = 0;        
        Num = zeros(rTuL(m,1),1);
        for n = 1:rTuL(m,1)
            NodeNum = num2str(NodoTunnelLink(n,m));
            % dati del mese
            comando = ['select EventDate, EventTime, XShift, ZShift, HShift, '...
                'HShift_local, X, Z from ElabDataView where EventDate >= ''' ...
                datarif ''' and  ToolNameID = ''' char(toolrif) ''' and UnitName = ''' ...
                char(unitrif) ''' and NodeNum = ''' NodeNum ''' '];
            curs = exec(conn,comando);
            curs = fetch(curs);
            Dati = curs.Data;
            Num(n,1) = NodoTunnelLink(n,m);
            
            datarifNEW = datestr(firstdata_num{m+1,1},'yyyy-mm-dd'); % data riferimento definita sul sito
            temporifNEW = datestr(firstdata_num{m+1,1},'HH:MM:SS');
            % primo dato per la stella
            comando = ['select HShift from ElabDataView where EventDate = ''' ...
                datarifNEW ''' and EventTime >= ''' temporifNEW ''' and  '...
                'ToolNameID = ''' char(toolrif) ''' and UnitName = ''' ...
                char(unitrif) ''' and NodeNum = ''' NodeNum ''' '];
            curs = exec(conn,comando);
            curs = fetch(curs);
            Stella1 = cell2mat(curs.Data);
            
            % Scarico ay che mi serve per orientare gli spostamenti in
            % convergenze/divergenza a seconda del quadrante - Inizio mese
            comando = ['select Val1, Val6 from RawDataView where Date >= ''' datarif ...
                ''' and UnitName = ''' char(unitrif) ''' and ToolNameID = ''' char(toolrif) ...
                ''' and NodeNum = ' NodeNum ' '];
            curs = exec(conn,comando);
            curs = fetch(curs);
            DatiaccY_Mese = curs.Data;
            
            % Scarico i parametri di calibrazione di ay
            comando = ['select Cal0, Cal1, Cal2, Cal3, Cal4, Cal5, Cal6, Cal7, Cal8, '...
                'CalA, CalB from CalibrationView where UnitName = ''' char(unitrif) ...
                ''' and ToolNameID = ''' char(toolrif) ''' and NodeNum = ''' NodeNum ''''];
            curs = exec(conn,comando);
            curs = fetch(curs);
            DCalTuL = curs.Data;
            [r,c] = size(DCalTuL);
            MATconv = zeros(r,c);
            for ii = 1:r
                for jj = 1:c
                    MATconv(ii,jj) = DCalTuL{ii,jj};
                end
            end
            DCalTuL = MATconv;
            caY_Tu = DCalTuL(:,4);
            pIntY_Tu = DCalTuL(:,5);
            iIntY_Tu = DCalTuL(:,6);
            
            [rD,rC] = size(Dati);
            if rC ~= 1
                T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))];
                Date = datenum(T); % Data
                if n == 1 % Il primo lo scrivo e creo la variabile di controllo
                else
                    [rS,~] = size(asseX);
                    if rD ~= rS
                        NODATA(m,1) = 1;
                        check = 0;
                        break
                    else
                        check = 1;
                    end
                end
                
                % divergenza/convergenza dei singoli nodi dall'inizio
                asseX(:,n) = cell2mat((Dati(:,3)));
                asseZ(:,n) = cell2mat(Dati(:,4));
                X_TuL_Mese(:,n) = cell2mat(Dati(:,7));
                Z_TuL_Mese(:,n) = cell2mat(Dati(:,8));
                accY_raw(:,n) = str2double(DatiaccY_Mese(:,1));
                t_TuL(:,n) = str2double(DatiaccY_Mese(:,2));
                accY_Mese(:,n) = accY_raw(:,n)*caY_Tu+(t_TuL(:,n)*pIntY_Tu+iIntY_Tu);
                diffX(:,n) = asseX(:,n)-asseX(1,n);
                diffZ(:,n) = asseZ(:,n)-asseZ(1,n);
                RIS_XZ(:,n) = 1000*cell2mat((Dati(:,6)));
                if n <= dim
                    stella_Rif(:,n) = 1000*(cell2mat(Dati(:,5))-Stella1(1,1));
                    stella_Mese(:,n) = 1000*(cell2mat(Dati(:,5))-cell2mat(Dati(1,5)));
                end
                                
                % dati relativi al mese
                RIS_XZ_Mese(1,n) = sqrt(diffX(end,n)^2 + diffZ(end,n)^2)*1000;
                [rAY,~] = size(accY_Mese);
                if isnan(accY_Mese(end,n)) == 1
                    for d = 1:rAY
                        if  isnan(accY_Mese(end-d+1,n)) == 0
                            diffaccY(1,n) = accY_Mese(end-d+1,n)-accY_Mese(1,n);
                            break
                        end
                    end
                else
                    diffaccY(1,n) = accY_Mese(end,n)-accY_Mese(1,n);
                end
                % correggo segno risultante
                if diffaccY(1,n) < 0
                    if Antiorario(n,1) == 1 || Antiorario(n,1) == 4
                        RIS_XZ_Mese(1,n) = -1*RIS_XZ_Mese(1,n);
                    end
                elseif diffaccY(1,n) > 0
                    if Antiorario(n,1) == 2 || Antiorario(n,1) == 3
                        RIS_XZ_Mese(1,n) = -1*RIS_XZ_Mese(1,n);
                    end
                end
            else
                NODATA(m,1) = 1;
                check = 1;
            end
        end
        
        if NODATA(m,1) == 0
            date = datestr(datenum(colonna2{m+1,1},'dd-mm-yyyy'),'yyyy-mm-dd'); % data riferimento definita sul sito
            % posizione di progetto dei nodi
            comando = ['select EventDate, EventTime, X, Z from ElabDataView where EventDate >= ''' ...
                date ''' and  ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ''' '];
            curs = exec(conn,comando);
            curs = fetch(curs);
            SezioneXZ = curs.Data;
            Datasez = SezioneXZ(1,1);
            Orasez = SezioneXZ(1,2);
            [rz,~] = size(SezioneXZ);
            scrivi = 1;
            for rr = 1:rz
                if strcmp(SezioneXZ(rr,1),Datasez)==1 && strcmp(SezioneXZ(rr,2),Orasez) ==1
                    CoordX(scrivi,1) = SezioneXZ(rr,3);
                    CoordZ(scrivi,1) = SezioneXZ(rr,4);
                    scrivi = scrivi+1;
                end
            end
            if strcmp(colonna2bis(m+1,1),colonna2(m+1,1)) == 0 % data zero diversa data riferimento
                datarifNEW = datestr(firstdata_num{m+1,1},'yyyy-mm-dd'); % data riferimento definita sul sito
                for nw = 1:rTuL(m,1)
                    NodeNum = num2str(NodoTunnelLink(nw,m));
                    comando = ['select EventDate, EventTime, XShift, ZShift, X, Z, '...
                        'from ElabDataView where EventDate = ''' datarifNEW ''' and  ToolNameID = ''' char(toolrif) ...
                        ''' and UnitName = ''' char(unitrif) ''' and NodeNum = ''' NodeNum ''' '];
                    curs = exec(conn,comando);
                    curs = fetch(curs);
                    DatiNEW = curs.Data; % dati registrati alla data di riferimento
                    Num(nw,1) = NodoTunnelLink(nw,m);
                    [~,rC] = size(DatiNEW);
                    if rC ~= 1
                        % dalla data di riferimento
                        % divergenza/convergenza dei singoli nodi dall'inizio
                        asseX(:,nw) = asseX(:,nw)-cell2mat(DatiNEW(1,3));
                        asseZ(:,nw) = asseZ(:,nw)-cell2mat(DatiNEW(1,4));
                        X_TuL_Rif(:,nw) = cell2mat(DatiNEW(1,5));
                        Z_TuL_Rif(:,nw) = cell2mat(DatiNEW(1,6));
                        
                        % Scarico ay che mi serve per orientare gli spostamenti in
                        % convergenze/divergenza a seconda del quadrante - dati
                        % dalla data di riferimento
                        comando = ['select Val1, Val6 from RawDataView where Date >= ''' datarifNEW ...
                            ''' and UnitName = ''' char(unitrif) ''' and ToolNameID = ''' char(toolrif) ...
                            ''' and NodeNum = ' NodeNum ' '];
                        curs = exec(conn,comando);
                        curs = fetch(curs);
                        DatiaccY_Rif = curs.Data;
                        
                        accY_raw(:,n) = str2double(DatiaccY(:,1));
                        t_TuL(:,n) = str2double(DatiaccY(:,2));
                        accY_Rif(:,n) = accY_raw(:,n)*caY_Tu+(t_TuL(:,n)*pIntY_Tu+iIntY_Tu);
                        
                        diffX(:,n) = asseX(:,n)-asseX(1,n);
                        diffZ(:,n) = asseZ(:,n)-asseZ(1,n);
                        
                        % Risultati dalla data di riferimento
                        RIS_XZ(:,n) = 1000*((asseX(:,n).^2+asseZ(:,n).^2).^0.5);
                        diffaccY_Rif(1,n) = accY_Mese(end,n)-accY_Rif(1,n);
                        % correggo segno risultante
                        if diffaccY_Rif(1,n) < 0
                            if Antiorario(n,1) == 1 || Antiorario(n,1) == 4
                                RIS_XZ(1,n) = -1*RIS_XZ(1,n);
                            end
                        elseif diffaccY_Rif(1,n) > 0
                            if Antiorario(n,1) == 2 || Antiorario(n,1) == 3
                                RIS_XZ(1,n) = -1*RIS_XZ(1,n);
                            end
                        end
                        
                        % dati relativi al mese
                        RIS_XZ_Mese(:,n) = sqrt(diffX(end,n).^2 + diffZ(end,n)^2)*1000;
                        diffaccY_Mese(:,n) = accY_Mese(:,n)-accY_Mese(1,n);
                        % correggo segno risultante
                        [rA,~] = size(accY_Mese);
                        for aa = 1:rA
                            if diffaccY_Mese(1,n) < 0
                                if Antiorario(n,1) == 1 || Antiorario(n,1) == 4
                                    RIS_XZ_Mese(aa,n) = -1*RIS_XZ_Mese(aa,n);
                                end
                            elseif diffaccY_Mese(1,n) > 0
                                if Antiorario(n,1) == 2 || Antiorario(n,1) == 3
                                    RIS_XZ_Mese(aa,n) = -1*RIS_XZ_Mese(aa,n);
                                end
                            end
                        end
                    else
                        NODATA(m,1) = 1;
                    end
                end
            end
                   
            q1 = find(Antiorario==1);
            q2 = find(Antiorario==2);
            q3 = find(Antiorario==3);
            q4 = find(Antiorario==4);
            m1 = max(abs(RIS_XZ_Mese(end,q1)));
            g1 = find(m1==abs(RIS_XZ_Mese));
            GI_Cir_Q1 = RIS_XZ_Mese(end,g1(1));
            m2 = max(abs(RIS_XZ_Mese(end,q2)));
            g2 = find(m2==abs(RIS_XZ_Mese));
            GI_Cir_Q2 = RIS_XZ_Mese(end,g2(1));
            m3 = max(abs(RIS_XZ_Mese(end,q3)));
            g3 = find(m3==abs(RIS_XZ_Mese));
            GI_Cir_Q3 = RIS_XZ_Mese(end,g3(1));
            m4 = max(abs(RIS_XZ_Mese(end,q4)));
            g4 = find(m4==abs(RIS_XZ_Mese));
            GI_Cir_Q4 = RIS_XZ_Mese(end,g4(1));
            GI_Cir_Q1_Num = Num(g1(1));
            GI_Cir_Q2_Num = Num(g2(1));
            GI_Cir_Q3_Num = Num(g3(1));
            GI_Cir_Q4_Num = Num(g4(1));
            GI_Cir_Seg = stella_Mese(end,:);
            GI_Cir_Date = Date;
            
            % Cerco eventuali correlazioni con PreConv Array
            NomeFile = strcat('Report',siteID,'-PCLvsTuL.txt');
            Filetesto = importdata(NomeFile);
            [rF,~] = size(Filetesto);
            AAA = 1;
            Var = 0;
            ind = 1;
            while AAA < rF % A un Cir compete (se c'è) uno ed un solo PreConv. Lo vado a cercare
                check1 = Filetesto(AAA,1);
                if check1 == 99999 % Non ci sono PreConv Array o non ci sono Cir
                   AAA = 2;
                else
                    check2 = Filetesto(AAA+1,1);
                    if check1 == str2num(DTcatena(end-2:end)) % Il Cir è da prendere in considerazione ed è riportato nella prima riga del file
                       Nodo = Filetesto(AAA+2,1);
                       Var = 1;
                    elseif check2 == str2num(DTcatena(end-2:end)) % Il Cir è da prendere in considerazione ed è riportato nella seconda riga del file
                           Nodo = Filetesto(AAA+3,1);
                           Var = 1;
                    end
                    AAA = AAA+4;
                end
            end
            if Var == 1
               GI_Cir_Z(:,ind) = (asseZ(:,Nodo)-asseZ(1,Nodo))*1000;
               ind = ind+1;
               Var = 0;
            end
            
            % Cerco eventuali correlazioni con Rad Array
            NomeFile = strcat('Report',siteID,'-TuLvsRL.txt');
            Filetesto = importdata(NomeFile);
            [rF,~] = size(Filetesto);
            AAA = 1;
            Var = 0;
            ind = 1;
            while AAA < rF % A un Cir compete un Rad Array. Lo vado a cercare
                check1 = Filetesto(AAA,1);
                if check1 == 99999 % Non ci sono Rad Array o non ci sono Cir
                   AAA = 2;
                else
                    check2 = Filetesto(AAA+1,1);
                    if check1 == str2num(DTcatena(end-2:end)) % Il Cir è da prendere in considerazione ed è riportato nella prima riga del file
                       Nodo = Filetesto(AAA+2,1);
                       Var = 1;
                    elseif check2 == str2num(DTcatena(end-2:end)) % Il Cir è da prendere in considerazione ed è riportato nella seconda riga del file
                           Nodo = Filetesto(AAA+3,1);
                           Var = 1;
                    end
                    AAA = AAA+4;
                end
                if Var == 1
                    GI_TuL_RL(:,ind) = sqrt(diffX(:,Nodo).^2 + diffZ(:,Nodo).^2)*1000; % ad un Cir possono competere più Rad. Il cir è unico
                    ind = ind+1;
                    Var = 0;
                end
            end
            
            % Istogramma convergenza/divergenza dei singoli nodi
            figure(1)
            [~,nn] = size(RIS_XZ_Mese(end,:));
            for w = 1:nn
                nodi_grafico(1,w) = w;
            end
            RIS = [RIS_XZ_Mese(end,:)' RIS_XZ(end,:)'];
            div_conv = barh(nodi_grafico,RIS);
            title('Risultante 2D degli spostamenti locali');
            xlabel('Spostamento [mm]');
            ylabel('Nodo [-]');
            h = gca;
            h.XAxis.MinorTick = 'on';
            h.YAxis.MinorTick = 'off';
            Max(1) = max(RIS_XZ_Mese(end,:));
            Max(2) = max(RIS_XZ(end,:));
            MAX = max(Max);
            Min(1) = min(RIS_XZ_Mese(end,:));
            Min(2) = min(RIS_XZ(end,:));
            MIN = min(Min);
            in1 = find(Max == MAX);
            in2 = find(Min == MIN);
            MM = [abs(MIN) MAX];
            MAXX = max(MM);
            in3 = find(MM == MAXX);
            if in3 == 1 % DX
                if in2 == 1
                    POS = find(RIS_XZ_Mese == Min(1));
                else
                    POS = find(RIS_XZ == Min(2));
                end
            else % SX
                if in1 == 1
                    POS = find(RIS_XZ_Mese == Max(1));
                else
                    POS = find(RIS_XZ == Max(2));
                end
            end
            if MAXX < 10 % mm
                xlim([-10 10]);
            else
                xlim([-MAXX MAXX])
            end
            ylim([0 nn+2]);
            yticks(0:1:nn);
            grid on
            if in3 == 1 % DX
                legend('Periodo di riferimento','Intero periodo','Location','northeast');
            else % SX
                legend('Periodo di riferimento','Intero periodo','Location','northwest');
            end
            TempName = char(strcat('Report',siteID,'-', char(toolrif),'Convergenza.png'));
            saveas(div_conv(1),TempName);
            ChartCIR = Image(TempName);
            ChartCIR.Style = {HAlign('justify'),ScaleToFit};
            ChartCIR_cap = Paragraph(['Fig. ' num2str(FIG) ' - Risultante 2D degli '...
                'spostamenti differenziali locali nel piano della sezione registrati durante '...
                'il periodo temporale di riferimento e l''intero periodo di monitoraggio']);
            FIG = FIG+1;
            ChartCIR_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
            close(figure(1))
            
            % ENG
            if activeEN == 1
                % Istogramma convergenza/divergenza dei singoli nodi
                figure(2)
                div_conv = barh(nodi_grafico,RIS);
                title('2D local displacements');
                xlabel('Displacement [mm]');
                ylabel('Node [-]');
                h = gca;
                h.XAxis.MinorTick = 'on';
                h.YAxis.MinorTick = 'off';
                if MAXX < 10 % mm
                    xlim([-10 10]);
                else
                    xlim([-MAXX MAXX])
                end
                ylim([0 nn+2]);
                yticks(0:1:nn);
                grid on
                if in3 == 1 % DX
                    legend('Reference time period','Complete monitoring period','Location','northeast');
                else % SX
                    legend('Reference time period','Complete monitoring period','Location','northwest');
                end
                TempName = char(strcat('Report',siteID,'-', char(toolrif),'Convergenza_ENG.png'));
                saveas(div_conv(1),TempName);
                ChartCIR_ENG = Image(TempName);
                ChartCIR_ENG.Style = {HAlign('justify'),ScaleToFit};
                ChartCIR_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - 2D Local differential displacements '...
                    'recorded in the section plane by the 3D MEMS sensors during the reference and the '...
                    'complete monitoring period']);
                FIG_ENG = FIG_ENG+1;
                ChartCIR_ENG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
            end
            close(figure(2))
                        
            % --- Sezione - MESE ---
            contaC_Mese = 1;
            contaD_Mese = 1;
            conta0_Mese = 1;
            for ris = 1:nn
                if RIS_XZ_Mese(end,ris)< -0.5
                    nodiCX_Mese(contaC_Mese,1) = CoordX(ris,1);
                    nodiCZ_Mese(contaC_Mese,1) = CoordZ(ris,1);
                    contaC_Mese = contaC_Mese + 1;
                elseif RIS_XZ_Mese(end,ris)> 0.5
                    nodiDX_Mese(contaD_Mese,1) = CoordX(ris,1);
                    nodiDZ_Mese(contaD_Mese,1) = CoordZ(ris,1);
                    contaD_Mese = contaD_Mese + 1;
                else
                    nodiFX_Mese(conta0_Mese,1) = CoordX(ris,1);
                    nodiFZ_Mese(conta0_Mese,1) = CoordZ(ris,1);
                    conta0_Mese = conta0_Mese + 1;
                end
            end
            
            % --- Sezione - GLOBALI ---
            contaC = 1;
            contaD = 1;
            conta0 = 1;
            for ris = 1:nn
                if RIS_XZ(end,ris)< -0.5
                    nodiCX_tot(contaC,1) = CoordX(ris,1);
                    nodiCZ_tot(contaC,1) = CoordZ(ris,1);
                    contaC = contaC + 1;
                elseif RIS_XZ(end,ris)> 0.5
                    nodiDX_tot(contaD,1) = CoordX(ris,1);
                    nodiDZ_tot(contaD,1) = CoordZ(ris,1);
                    contaD = contaD + 1;
                else
                    nodiFX_tot(conta0,1) = CoordX(ris,1);
                    nodiFZ_tot(conta0,1) = CoordZ(ris,1);
                    conta0 = conta0 + 1;
                end
            end
            
            % Grafico Sezione Mese
            figure(3)
            CoordX = [CoordX(:,1); CoordX(1,1); CoordX(1,1)];
            CoordZ = [CoordZ(:,1); CoordZ(end,1); CoordZ(1,1)];
            sez = plot(cell2mat(CoordX(:,1)),cell2mat(CoordZ(:,1)),'-','Color','black');
            hold on
            if contaC_Mese > 1
                sezC = plot(cell2mat(nodiCX_Mese(:,1)),cell2mat(nodiCZ_Mese(:,1)),'o','Color','red');
                set(sezC, 'markerfacecolor', get(sezC, 'color'));
            end
            if contaD_Mese > 1
                sezD = plot(cell2mat(nodiDX_Mese(:,1)),cell2mat(nodiDZ_Mese(:,1)),'o','Color',[0.4660 0.6740 0.1880]);
                set(sezD, 'markerfacecolor', get(sezD, 'color'));
            end
            if conta0_Mese > 1
                sezF = plot(cell2mat(nodiFX_Mese(:,1)),cell2mat(nodiFZ_Mese(:,1)),'o','Color','black');
                set(sezF, 'markerfacecolor', get(sezF, 'color'));
            end
            if contaC_Mese > 1 && contaD_Mese > 1 && conta0_Mese > 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese > 1 && contaD_Mese > 1 && conta0_Mese == 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi divergenti'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese > 1 && contaD_Mese == 1 && conta0_Mese > 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese == 1 && contaD_Mese > 1 && conta0_Mese > 1
                legend({'Geometria della sezione','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese > 1 && contaD_Mese == 1 && conta0_Mese == 1
                legend({'Geometria della sezione','Nodi convergenti'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese == 1 && contaD_Mese > 1 && conta0_Mese == 1
                legend({'Geometria della sezione','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC_Mese == 1 && contaD_Mese == 1 && conta0_Mese > 1
                legend({'Geometria della sezione','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            end
            title('Spostamenti Locali - Periodo di riferimento');
            xlabel('X [m]');
            ylabel('Z [m]');
            h = gca;
            h.XAxis.MinorTick = 'on';
            grid off
            TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezCIR.png'));
            saveas(sez,TempName);
            ChartSEZ = Image(TempName);
            ChartSEZ.Style = {HAlign('center'),Height('6.5cm')};
            close(figure(3))
            
            % ENG
            if activeEN == 1
                % Grafico Sezione Mese
                figure(4)
                sez = plot(cell2mat(CoordX(:,1)),cell2mat(CoordZ(:,1)),'-','Color','black');
                hold on
                if contaC_Mese > 1
                    sezC = plot(cell2mat(nodiCX_Mese(:,1)),cell2mat(nodiCZ_Mese(:,1)),'o','Color','red');
                    set(sezC, 'markerfacecolor', get(sezC, 'color'));
                end
                if contaD_Mese > 1
                    sezD = plot(cell2mat(nodiDX_Mese(:,1)),cell2mat(nodiDZ_Mese(:,1)),'o','Color',[0.4660 0.6740 0.1880]);
                    set(sezD, 'markerfacecolor', get(sezD, 'color'));
                end
                if conta0_Mese > 1
                    sezF = plot(cell2mat(nodiFX_Mese(:,1)),cell2mat(nodiFZ_Mese(:,1)),'o','Color','black');
                    set(sezF, 'markerfacecolor', get(sezF, 'color'));
                end
                if contaC_Mese > 1 && contaD_Mese > 1 && conta0_Mese > 1
                    legend({'Array geometry','Convergent nodes','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese > 1 && contaD_Mese > 1 && conta0_Mese == 1
                    legend({'Array geometry','Convergent nodes','Divergent nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese > 1 && contaD_Mese == 1 && conta0_Mese > 1
                    legend({'Array geometry','Convergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese == 1 && contaD_Mese > 1 && conta0_Mese > 1
                    legend({'Array geometry','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese > 1 && contaD_Mese == 1 && conta0_Mese == 1
                    legend({'Array geometry','Convergent nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese == 1 && contaD_Mese > 1 && conta0_Mese == 1
                    legend({'Array geometry','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC_Mese == 1 && contaD_Mese == 1 && conta0_Mese > 1
                    legend({'Array geometry','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                end
                title('Local displacements - Reference time period');
                xlabel('X [m]');
                ylabel('Z [m]');
                h = gca;
                h.XAxis.MinorTick = 'on';
                grid off
                TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezCIR_ENG.png'));
                saveas(sez,TempName);
                ChartSEZ_ENG = Image(TempName);
                ChartSEZ_ENG.Style = {HAlign('center'),Height('6.5cm')};
            end
            close(figure(4))
            
            % Grafico Sezione Globali
            figure(5)
            sez = plot(cell2mat(CoordX(:,1)),cell2mat(CoordZ(:,1)),'-','Color','black');
            hold on
            if contaC > 1
                sezC = plot(cell2mat(nodiCX_tot(:,1)),cell2mat(nodiCZ_tot(:,1)),'o','Color','red');
                set(sezC, 'markerfacecolor', get(sezC, 'color'));
            end
            if contaD > 1
                sezD = plot(cell2mat(nodiDX_tot(:,1)),cell2mat(nodiDZ_tot(:,1)),'o','Color',[0.4660 0.6740 0.1880]);
                set(sezD, 'markerfacecolor', get(sezD, 'color'));
            end
            if conta0 > 1
                sezF = plot(cell2mat(nodiFX_tot(:,1)),cell2mat(nodiFZ_tot(:,1)),'o','Color','black');
                set(sezF, 'markerfacecolor', get(sezF, 'color'));
            end
            if contaC > 1 && contaD > 1 && conta0 > 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC > 1 && contaD > 1 && conta0 == 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi divergenti'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC > 1 && contaD == 1 && conta0 > 1
                legend({'Geometria della sezione','Nodi convergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC == 1 && contaD > 1 && conta0 > 1
                legend({'Geometria della sezione','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC > 1 && contaD == 1 && conta0 == 1
                legend({'Geometria della sezione','Nodi convergenti'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC == 1 && contaD > 1 && conta0 == 1
                legend({'Geometria della sezione','Nodi divergenti','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            elseif contaC == 1 && contaD == 1 && conta0 > 1
                legend({'Geometria della sezione','Nodi stabili'},'Position',[0.37 0.37 0.3 0.2]);
            end
            title('Spostamenti Locali - Intero periodo');
            xlabel('X [m]');
            ylabel('Z [m]');
            h = gca;
            h.XAxis.MinorTick = 'on';
            grid off
            TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezCIR2.png'));
            saveas(sez,TempName);
            
            ChartSEZ2 = Image(TempName);
            ChartSEZ2.Style = {HAlign('center'),Height('6.5cm')};
            ChartSEZ_cap = Paragraph(['Fig. ' num2str(FIG) ' - Direzione della '...
                'risultante del vettore di spostamento 2D differenziale locale '...
                'registrata durante il periodo temporale di riferimento e a '...
                'partire dalla data di riferimento definita in Tabella 1']);
            FIG = FIG+1;
            ChartSEZ_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
            
            lot = Table({ChartSEZ, ChartSEZ2});
            lot.Style = {ResizeToFitContents(false), Width('100%')};
            close(figure(5))
            
            if activeEN == 1
                % Grafico Sezione Globali
                figure(6)
                sez = plot(cell2mat(CoordX(:,1)),cell2mat(CoordZ(:,1)),'-','Color','black');
                hold on
                if contaC > 1
                    sezC = plot(cell2mat(nodiCX_tot(:,1)),cell2mat(nodiCZ_tot(:,1)),'o','Color','red');
                    set(sezC, 'markerfacecolor', get(sezC, 'color'));
                end
                if contaD > 1
                    sezD = plot(cell2mat(nodiDX_tot(:,1)),cell2mat(nodiDZ_tot(:,1)),'o','Color',[0.4660 0.6740 0.1880]);
                    set(sezD, 'markerfacecolor', get(sezD, 'color'));
                end
                if conta0 > 1
                    sezF = plot(cell2mat(nodiFX_tot(:,1)),cell2mat(nodiFZ_tot(:,1)),'o','Color','black');
                    set(sezF, 'markerfacecolor', get(sezF, 'color'));
                end
                if contaC > 1 && contaD > 1 && conta0 > 1
                    legend({'Array geometry','Convergent nodes','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC > 1 && contaD > 1 && conta0 == 1
                    legend({'Array geometry','Convergent nodes','Divergent nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC > 1 && contaD == 1 && conta0 > 1
                    legend({'Array geometry','Convergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC == 1 && contaD > 1 && conta0 > 1
                    legend({'Array geometry','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC > 1 && contaD == 1 && conta0 == 1
                    legend({'Array geometry','Convergent nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC == 1 && contaD > 1 && conta0 == 1
                    legend({'Array geometry','Divergent nodes','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                elseif contaC == 1 && contaD == 1 && conta0 > 1
                    legend({'Array geometry','Stable nodes'},'Position',[0.37 0.37 0.3 0.2]);
                end
                title('Local displacements - Complete monitoring period');
                xlabel('X [m]');
                ylabel('Z [m]');
                h = gca;
                h.XAxis.MinorTick = 'on';
                grid off
                TempName = char(strcat('Report',siteID,'-', char(toolrif),'SezCIR2_ENG.png'));
                saveas(sez,TempName);
                
                ChartSEZ2_ENG = Image(TempName);
                ChartSEZ2_ENG.Style = {HAlign('center'),Height('6.5cm')};
                ChartSEZ_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Direction of the '...
                    '2D local differential displacement vector '...
                    'observed during the reference time period and strarting from the reference date '...
                    'reported in Table 1']);
                FIG_ENG = FIG_ENG+1;
                ChartSEZ_ENG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
                
                lot_ENG = Table({ChartSEZ_ENG, ChartSEZ2_ENG});
                lot_ENG.Style = {ResizeToFitContents(false), Width('100%')};
            end
            close(figure(6))
            
            % immagine stella di convergenza
            nome = char(strcat(char(unitrif),'-', char(toolrif),'-Star.png'));
            Star = Image(nome);
            Star.Style = {Height('6.5cm')};
            Star_ENG = Image(nome);
            Star_ENG.Style = {Height('6.5cm')};
            
            % --- Segmenti di convergenza MESE ---
            [~,cs] = size(stella_Mese);
            for y = 1:cs
                varseg_Mese(y,1) = stella_Mese(end,y);
            end
            maxseg_Mese = max(abs(varseg_Mese));
            maxsegindex_Mese = find(abs(varseg_Mese) == maxseg_Mese);
            maxseg_Mese = varseg_Mese(maxsegindex_Mese);
            
            % --- Segmenti di convergenza Globale ---
            [~,cs] = size(stella_Rif);
            for y = 1:cs
                varseg_tot(y,1) = stella_Rif(end,y);
                numseg(y,1) = y;
            end
            maxseg = max(abs(varseg_tot));
            maxsegindex = find(abs(varseg_tot) == maxseg);
            maxseg = varseg_tot(maxsegindex);
                        
            figure(7)
            Seg = [varseg_Mese varseg_tot];
            segmenti = barh(numseg,Seg);
            title('Variazione dei segmenti di convergenza');
            ylabel('Segmento [-]');
            xlabel('Variazione di lunghezza [mm]');
            h = gca;
            h.XAxis.MinorTick = 'on';
            Max(1) = max(varseg_Mese);
            Max(2) = max(varseg_tot);
            MAX = max(Max);
            Min(1) = min(varseg_Mese);
            Min(2) = min(varseg_tot);
            MIN = min(Min);
            MAXX = max(abs(MIN),MAX);
            MM = [abs(MIN) MAX];
            in3 = find(MM == MAXX); % Dx-Sx
            if in3 == 1 % DX
                legend('Periodo di riferimento','Intero periodo','Location','northeast');
            else % SX
                legend('Periodo di riferimento','Intero periodo','Location','northwest');
            end
            ylim([0 cs+2]);
            yticks(0:1:nn);
            if MAXX < 10 % mm
                xlim([-10 10]);
            else
                xlim([-MAXX MAXX])
            end
            
            grid on
            grid minor
            TempName = char(strcat('Report',siteID,'-', char(toolrif),'StarSeg.png'));
            saveas(segmenti(1),TempName);
            ChartSEG = Image(TempName);
            ChartSEG.Style = {Height('6.8cm')};
            ChartSEG_cap = Paragraph(['Fig. ' num2str(FIG) ' - Variazione della '...
                'lunghezza dei segmenti di convergenza durante il periodo temporale '...
                'di riferimento e l''intero periodo di monitoraggio']);
            FIG = FIG+1;
            ChartSEG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
            lot2 = Table({Star, ChartSEG});
            lot2.Style = {ResizeToFitContents(false), Width('100%')};
            close(figure(7))
            
            if activeEN == 1
                figure(8)
                segmenti = barh(numseg,Seg);
                title('Convergence segments variation');
                ylabel('Segment [-]');
                xlabel('Length variation [mm]');
                h = gca;
                h.XAxis.MinorTick = 'on';
                in3 = find(MM == MAXX); % Dx-Sx
                if in3 == 1 % DX
                    legend('Reference time period','Complete monitoring period','Location','northeast');
                else % SX
                    legend('Reference time period','Complete monitoring period','Location','northwest');
                end
                ylim([0 cs+2]);
                yticks(0:1:nn);
                if MAXX < 10 % mm
                    xlim([-10 10]);
                else
                    xlim([-MAXX MAXX])
                end
                
                grid on
                grid minor
                TempName = char(strcat('Report',siteID,'-', char(toolrif),'StarSeg_ENG.png'));
                saveas(segmenti(1),TempName);
                ChartSEG_ENG = Image(TempName);
                ChartSEG_ENG.Style = {Height('6.8cm')};
                ChartSEG_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Length variations of each convergence segment '...
                    'recorded during the reference and the complete monitoring periods']);
                FIG_ENG = FIG_ENG+1;
                ChartSEG_ENG_cap.Style = {HAlign('justify'),FontSize(Font_caption),Italic(1),Color('midnightblue')};
                lot2_ENG = Table({Star_ENG, ChartSEG_ENG});
                lot2_ENG.Style = {ResizeToFitContents(false), Width('100%')};
            end
            close(figure(8))
                        
            sezCIR = Heading3('Tunnel Link');
            sezCIR.Style = {FontSize(Font_tools),Bold(1),Italic(1)};
            CC = Section();
            CC.Title = sezCIR;
            % Testi relativi all'ultimo mese
            testo1M = Paragraph(['Il grafico riportato di seguito mostra l''entit' char(224) ' e '...
                'la direzione dei vettori di spostamento differenziale locale nel piano '...
                'della sezione, misurati dai sensori Tunnel Link '...
                'relativamente al periodo temporale di riferimento e all''intero periodo di monitoraggio. '...
                'Il vettore ' char(232) ' ottenuto come risultante '...
                'delle componenti nel piano X-Z, ovvero larghezza ed altezza della sezione. '...
                'In particolare, valori negativi di spostamento indicano una convergenza '...
                'del nodo verso il centro della sezione, mentre spostamenti '...
                'positivi caratterizzano una divergenza del sensore in oggetto.']);
            parte1 = ['La figura seguente riassume la direzione dei singoli nodi '...
                'rappresentati sulla geometria di progetto della sezione. Nel periodo '...
                'temporale di riferimento, l''analisi degli spostamenti ha evidenziato ' ...
                num2str(contaC_Mese-1) ];
            if contaC_Mese-1 == 1
                parte2 = ' nodo convergente';
            else
                parte2 = ' nodi convergenti';
            end
            parte3 = [', ' num2str(contaD_Mese-1) ];
            if contaD_Mese-1 == 1
                parte4 = ' nodo divergente ';
            else
                parte4 = ' nodi divergenti ';
            end
            parte5 = ['e ' num2str(conta0_Mese-1) ]; 
            if conta0_Mese-1 == 1
                parte6 = ' nodo stabile. ';
            else
                parte6 = ' nodi stabili. ';
            end
            parte7 = ['La medesima analisi con riferimento all''intero '...
                'periodo di monitoraggio mostra ' num2str(contaC-1) ];
            if conta0-1 == 0
                if contaC-1 == 1
                    parte8 = [' nodo convergente e ' num2str(contaD-1)];
                else
                    parte8 = [' nodi convergenti e ' num2str(contaD-1)];
                end
                if contaD-1 == 1
                    parte9 = ' nodo divergente. ';
                else
                    parte9 = ' nodi divergenti. ';
                end
            else
                if contaC-1 == 1
                    parte8 = [' nodo convergente, ' num2str(contaD-1)];
                else
                    parte8 = [' nodi convergenti, ' num2str(contaD-1)];
                end
                if contaD-1 == 1
                    parte9 = ' nodo divergente ';
                else
                    parte9 = ' nodi divergenti ';
                end
                parte10 = ['e ' num2str(conta0-1)];
                if conta0-1 == 1
                    parte11 = ' nodo stabile. ';
                else
                    parte11 = ' nodi stabili. ';
                end
            end
            parte12 = ['Si noti che in questa rappresentazione vengono '...
                'considerati stabili i nodi caratterizzati da uno spostamento con '...
                'modulo inferiore a 0.5 mm.']; 
            if conta0-1 == 0
                testo2M = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8 ...
                    parte9 parte12]);
            else
                testo2M = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8 ...
                    parte9 parte10 parte11 parte12]);
            end
            testo3M = Paragraph(['Vengono inoltre riportate le variazioni di lunghezza '...
                'dei segmenti di convergenza durante il periodo temporale di riferimento '...
                'e l''intero periodo di monitoraggio. I segmenti sono definiti con '...
                'l''ausilio della stella topografica riportata in figura. ' ...
                'In particolare, la maggior variazione relativa al periodo di riferimento ' ...
                char(232) ' osservabile nel segmento S' num2str(maxsegindex_Mese(1,1)) ...
                ' ed ' char(232) ' pari a ' num2str(round(maxseg_Mese(1,1),1)) ' mm. '...
                'Facendo riferimento all''intero periodo, S' num2str(maxsegindex(1,1)) ...
                ' risulta essere il segmento maggiormente attivo, con uno spostamento pari a '...
                num2str(round(maxseg(1,1),1)) ' mm.']);
            spazio = Paragraph('');
            testo1M.HAlign = 'justify';
            testo2M.HAlign = 'justify';
            testo3M.HAlign = 'justify';
            
            add(DT,sezCIR);
            add(DT,testo1M);
            add(DT,ChartCIR);
            add(DT,ChartCIR_cap);
            add(DT,testo2M);
            add(DT,spazio);
            add(DT,lot);
            add(DT,ChartSEZ_cap);
            add(DT,testo3M);
            add(DT,lot2);
            add(DT,ChartSEG_cap);
            add(DT,br);
            
            if activeEN == 1
                sezCIR_ENG = Heading3('Tunnel Link');
                sezCIR_ENG.Style = {FontSize(Font_tools),Bold(1),Italic(1)};
                CC_ENG = Section();
                CC_ENG.Title = sezCIR_ENG;
                % Testi relativi all'ultimo mese
                testo1M = Paragraph(['Following graphs display the magnitude and direction of local differential displacements in the section plane '...
                    'measured by the 3D MEMS sensors, both during the reference and complete monitoring period. '... '...
                    'The 2D vector is the resultant of displacement components in the X-Z plane, representing the section width and '...
                    'height, respectively. In particular, negative values indicate that the node is converging towards the centre of '...
                    'the section, while positive ones correspond to a divergent movement.']);
                parte1 = ['The following figure summarizes the displacement direction of each single node, '...
                    'which are represented on the section geometry. During the reference time period, the analysis evidenced '...
                    num2str(contaC_Mese-1) ];
                if contaC_Mese-1 == 1
                    parte2 = ' convergent node';
                else
                    parte2 = ' convergent nodes';
                end
                parte3 = [', ' num2str(contaD_Mese-1) ];
                if contaD_Mese-1 == 1
                    parte4 = ' divergent sensor ';
                else
                    parte4 = ' divergent sensors ';
                end
                parte5 = ['and ' num2str(conta0_Mese-1) ];
                if conta0_Mese-1 == 1
                    parte6 = ' stable one. ';
                else
                    parte6 = ' stable ones. ';
                end
                parte7 = ['The same analysis performed  on the complete monitoring period '...
                    'resulted in ' num2str(contaC-1) ];
                if conta0-1 == 0
                    if contaC-1 == 1
                        parte8 = [' convergent node and ' num2str(contaD-1)];
                    else
                        parte8 = [' convergent nodes and ' num2str(contaD-1)];
                    end
                    if contaD-1 == 1
                        parte9 = ' divergent sensor. ';
                    else
                        parte9 = ' divergent sensors. ';
                    end
                else
                    if contaC-1 == 1
                        parte8 = [' convergent node, ' num2str(contaD-1)];
                    else
                        parte8 = [' convergent nodes, ' num2str(contaD-1)];
                    end
                    if contaD-1 == 1
                        parte9 = ' divergent sensor ';
                    else
                        parte9 = ' divergent sensors ';
                    end
                    parte10 = ['and ' num2str(conta0-1)];
                    if conta0-1 == 1
                        parte11 = ' stable one. ';
                    else
                        parte11 = ' stable ones. ';
                    end
                end
                parte12 = ['In this specific representation, nodes featuring displacement values less than 0.5 mm '...
                    'are assumed to be stable.'];
                if conta0-1 == 0
                    testo2M = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8 ...
                        parte9 parte12]);
                else
                    testo2M = Paragraph([parte1 parte2 parte3 parte4 parte5 parte6 parte7 parte8 ...
                        parte9 parte10 parte11 parte12]);
                end
                testo3M = Paragraph(['Moreover, the following graph reports the length variation of '...
                    'each convergence segment referred to the monitored tunnel section, both during the reference '...
                    'and complete monitoring periods. Segments definition is based on the topographic star displayed ' ...
                    'in the corresponding figure. In this case, segment S' num2str(maxsegindex_Mese(1,1)) ' presented the '...
                    'maximum length variation observed during the reference time period, ' ...
                    'with a difference of ' num2str(round(maxseg_Mese(1,1),1)) ' mm. '...
                    'Taking into account the complete monitoring period, the maximum variation is obsverved on segment S' num2str(maxsegindex(1,1)) ...
                    ', with a difference of '...
                    num2str(round(maxseg(1,1),1)) ' mm.']);
                spazio = Paragraph('');
                testo1M.HAlign = 'justify';
                testo2M.HAlign = 'justify';
                testo3M.HAlign = 'justify';
                
                add(DT_ENG,sezCIR_ENG);
                add(DT_ENG,testo1M);
                add(DT_ENG,ChartCIR_ENG);
                add(DT_ENG,ChartCIR_ENG_cap);
                add(DT_ENG,testo2M);
                add(DT_ENG,spazio);
                add(DT_ENG,lot);
                add(DT_ENG,ChartSEZ_ENG_cap);
                add(DT_ENG,testo3M);
                add(DT_ENG,lot2);
                add(DT_ENG,ChartSEG_ENG_cap);
                add(DT_ENG,br);
            end
        else
            if ATTIVA == 1
                testo = Paragraph('Non sono presenti dati relativi al periodo temporale considerato.');
                ATTIVA = 0;
                add(DT,testo);
                check = 1;
                if activeEN == 1
                    testo = Paragraph('No data available for the reference time period.');
                    add(DT,testo);
                end
            end
        end
    end
end
    
text = 'report_TuL function executed correctly';
fprintf(fileID,fmt,text);
fclose(fileID);
    
end