هل يمكنك شرح الكود التالي بالتفصيل    function Callback_buttonRUN(axes2,axes3,axes4,axes5,axes6,axes7,alt,lat,lon,day,month,year,tilt,roofSA,yaw)
% profile on

%cla(axes2);    cla(axes3);    cla(axes4);    cla(axes5; cla(axes6);   cla(axes7);
%drawnow;
%axes2=findobj('Tag','axes2');   axes3=findobj('Tag','axes3');
%axes4=findobj('Tag','axes4');   axes5=findobj('Tag','axes5');
%axes6=findobj('Tag','axes6');   axes7=findobj('Tag','axes7');
fig2=findobj('Tag','figure1');
fig2.Pointer='watch';
drawnow;
% tabgp1=findobj('Tag','tabgroup1');
% tabgp1.Visible='on';

%% Date
UTC=1;

% EinGanzerTag1=linspace(datenum([2017,10,31,00,00,00]),datenum([2017,10,31,24,00,00]),25);% der 31.10.2017 unterteilt in 24 Stunden
EinGanzerTag1=linspace(datenum([str2double(year),str2double(month),str2double(day),00,00,00]),datenum([str2double(year),str2double(month),str2double(day),24,00,00]),25);


% sunrise(. .) 
[SRISE,SSET,NOON,sunRiseStr,sunSetStr,NoonStr,SunHours] =  computeSunRiseSetHours(lat,lon,alt,day,month,year,UTC);

% sunRiseSet(..)
Date =[day,'-',month,'-',year];
[Datesun_rise_set,Datesr_string,Datess_string,Dateopt,Datenoon] = sunRiseSet_lucas(axes7,axes6,str2double(lat), str2double(lon), UTC, Date, 0);

% sun_position(time,location)
[SonnenPOS] = calculateSonnenPOS(lat,lon,alt,day,month,year,UTC);

% solarAzEl(..) - no UTC
[Az,El] = computeSolarAzEl(EinGanzerTag1,lat,lon,alt); 


% solarPosition(. . )
[SonnenPosition]= calculateSolarPosition(lat,lon,EinGanzerTag1,UTC);


 



%% NOW

% sun_Position(..)
[SonnenPOSNow]= calculateSonnenPOSNow(lat,lon,alt);

% solarAzEl() und solarPosition
 [AzNow,ElNow,XsunNow,YsunNow,ZsunNow,xN,yN,zN] = calculateSolarPosNow(lat,lon,alt);
 %%  TODAY
 
 % SolarAzEl() - trajetrory - not capable of UTC 
 [xTodayAzEl,yTodayAzEl,zTodayAzEl,TodayAz,TodayEl] = computeSolarAzElToday(lat,lon,alt); 
 
 % sunrise() - trajetory
 [sunRiseStrToday,sunSetStrToday,NoonStrToday,SunHoursToday] =  computeSunRiseSetHoursTODAY(lat,lon,alt);
 
 % solarPosition() - trajetory
[xToday,yToday,zToday,SonnenPositionToday] = calculateSunTrajetoryToday(lat,lon,alt); % SonnenPositionToday

% sunRiseSet(..) - trajetory
date =datestr(now,'dd-mm-yy');
[sun_rise_set,sr_string,ss_string,opt,noon] = sunRiseSet_lucas(axes7,axes6,str2double(lat), str2double(lon), UTC, date, 1);

% sun_position(time,location)

[SonnenPOSToday] = calculateSonnenPOSToday(lat,lon,alt,UTC);




% transform polar to cartesian coordinates
[xSonne,ySonne,zSonne,xSonne1,ySonne1,zSonne1,xSonne2,ySonne2,zSonne2,xNow,yNow,zNow,xPOSnow,yPOSnow,zPOSnow,xSun3,ySun3,zSun3,xSonne3,ySonne3,zSonne3] = umrechnung(SonnenPOS,SonnenPosition,Az,El,AzNow,ElNow,SonnenPOSNow,opt,Dateopt);
%%
[dAx,dAy,dAz,dAnx,dAny,dAnz,dAn_RichtungsVektor,dA_RichtungsVektor] = computeNormalVectorNew(tilt,yaw);

EinstrahlungsRichtungsVektor=[xSonne,ySonne,zSonne]; 
%EinstrahlungsRichtungsVektor= EinstrahlungsRichtungsVektor./10;


[LeistungP,AnstehendeLeistung,AnstehendeLeistung2,EingeschlossenerWinkel,LeistungP2,EingeschlossenerWinkel2] = BerrechneDirekteStrahlungsLeistung(EinstrahlungsRichtungsVektor,dAn_RichtungsVektor,El,roofSA,SonnenPosition,xSonne3,ySonne3,zSonne3,Dateopt);

% [OPTenergyDate,k,k2,sunHoursSec] = numericIntegration(EinGanzerTag1,LeistungP2,LeistungP,Dateopt);
[OPTenergyDate,k,k2,sunHoursSec,DE] = SmartNumericIntegration(EinGanzerTag1,LeistungP2,LeistungP,Dateopt);

%% Tab2 Sonnen_Positions Anzeiger    _choosen Date
% axes2.NextPlot='add';
drawCoordinateSystem(axes2);
%drawImprovedCoordinateSystem(axes2);
%drawRuler(axes1,phiPol,phiAz,thetaPol,thetaAz,psiPol,psiAz,R,PolMin,PolMax,AzMin,AzMax,PolSteps,AzSteps,PolRuler,AzRuler,PolTickLabel,PolRulerInner,AzTickLabel,AzRulerInner,AzRulerOuter)
% drawRuler(axes2,0,0,0,0,0,0,5,90,270,0,90,10,10,1,1,1,1,1,1,1,1);
drawRulerNew(axes2);

drawSunAndTrajectory(axes2,xSonne,ySonne,zSonne,zSonne1,xSonne1,ySonne1,xSonne2,ySonne2,zSonne2,EinGanzerTag1,lat,lon,alt,sunRiseStr,sunSetStr,SunHours,day,month,year,Datesr_string,Datess_string,xSonne3,ySonne3,zSonne3,Dateopt);  

drawTiltAndNormalwithPanelUiContext(axes2,dAx,dAy,dAz,dAnx,dAny,dAnz);
  
 %% Tab5 Sun_Position_Now

drawSunPositionNOW(axes5,lat,lon,alt,xNow,yNow,zNow,dAx,dAy,dAz,dAnx,dAny,dAnz,sunRiseStrToday,sunSetStrToday,SunHoursToday,xToday,yToday,zToday,xTodayAzEl,yTodayAzEl,zTodayAzEl,XsunNow,YsunNow,ZsunNow,xN,yN,zN,xPOSnow,yPOSnow,zPOSnow,sr_string,ss_string,xSun3,ySun3,zSun3,AzNow,ElNow);
%% Tab3 Sonnen_Ausrichtung
% plot curves
plotSonnenAusrichtung(axes3,LeistungP,EinGanzerTag1,day,month,year,EingeschlossenerWinkel,LeistungP2,EingeschlossenerWinkel2,tilt);
% show results
plotResult(axes3,k,k2,OPTenergyDate,EinGanzerTag1,LeistungP2,sunHoursSec,DE);
%% Tab4 
PlotSonnenLeistung(axes4,EinGanzerTag1,AnstehendeLeistung2,day,month,year,AnstehendeLeistung);

%% Tab 6 u 7
PlotAzimuthElevationAxes6u7(axes6,axes7,SonnenPOSToday,TodayAz,TodayEl,SonnenPositionToday,EinGanzerTag1);
%______________________________________________________________________________

fig2.Pointer='arrow';
% tabgp1.Visible='on';
 drawnow 

 %  profile viewer
end