#include "AliESDEvent.h"
#include "AliESDMuonTrack.h"
#include "AliESDVertex.h"
-#include "AliMagFMaps.h"
+#include "AliMagF.h"
#include "AliLog.h"
#include <TSystem.h>
ClassImp(AliMUONCheck)
/// \endcond
+//_____________________________________________________________________________
+const TString& AliMUONCheck::GetDefaultOutFileName()
+{
+ /// Default output file name
+ static const TString kDefaultOutFileName = "output.txt";
+ return kDefaultOutFileName;
+}
+
+//_____________________________________________________________________________
AliMUONCheck::AliMUONCheck(const char* galiceFile, const char* esdFile,Int_t firstEvent, Int_t lastEvent,const char* outDir)
: TObject(),
fFileName(galiceFile),
fFileNameSim(),
fesdFileName(esdFile),
-foutDir(outDir),
+fkOutDir(outDir),
+fOutFileName(GetDefaultOutFileName()),
fFirstEvent(firstEvent),
fLastEvent(lastEvent)
{
fFileName(galiceFile),
fFileNameSim(galiceFileSim),
fesdFileName(esdFile),
-foutDir(outDir),
+fkOutDir(outDir),
+fOutFileName(GetDefaultOutFileName()),
fFirstEvent(firstEvent),
fLastEvent(lastEvent)
{
if (!tree)
{
Error("CheckESD", "no ESD tree found");
- AliError(Form("CheckESD", "no ESD tree found"));
+ AliError(Form("no ESD tree found"));
return ;
}
fESD->ReadFromTree(tree);
for (ievent = fFirstEvent; ievent < endOfLoop; ++ievent )
{
nev++;
- tree->GetEvent(ievent);
- if (!fESD)
+ if (tree->GetEvent(ievent) <= 0)
{
Error("CheckESD", "no ESD object found for event %d", ievent);
return ;
for ( Int_t iTrack1 = 0; iTrack1<nTracks; ++iTrack1 )
{ //1st loop
AliESDMuonTrack* muonTrack = fESD->GetMuonTrack(iTrack1);
+
+ // skip fake tracks (ghosts)
+ if (!muonTrack->ContainTrackerData()) continue;
+
ftracktot++;
thetaX = muonTrack->GetThetaX();
}//if(pdc06TriggerResponse)
- gSystem->cd(foutDir);
+ gSystem->cd(fkOutDir);
- FILE *outtxt=fopen("output.txt","a");
- freopen("output.txt","a",outtxt);
+ FILE *outtxt=fopen(fOutFileName.Data(),"a");
if(pdc06TriggerResponse){
fprintf(outtxt," \n");
printf("*** Leaving MuonKine() *** \n");
printf("**************************************************************** \n");
- gSystem->cd(foutDir);
- FILE *outtxt=fopen("output.txt","a");
- freopen("output.txt","a",outtxt);
+ gSystem->cd(fkOutDir);
+ FILE *outtxt=fopen(fOutFileName.Data(),"a");
fprintf(outtxt," \n");
fprintf(outtxt,"=================================================================\n");
fprintf(outtxt,"================ MUONkine SUMMARY ================\n");
}//evt loop
- gSystem->cd(foutDir);
+ gSystem->cd(fkOutDir);
TCanvas *c6 = new TCanvas("c6","TOF",400,10,600,700);
c6->Divide(1,2);
c6->cd(1);
ndigits = digitStore->GetSize(detele,1-cathode);
dEchannelsNonBending[ichamber][idetele] = nchannels;
- dEoccupancyBending[ichamber][idetele] = ndigits;
+ dEoccupancyNonBending[ichamber][idetele] = ndigits;
cHchannelsNonBending[ichamber] += nchannels;
cHoccupancyNonBending[ichamber] += ndigits;
totalchannelsNonBending += nchannels;
// Output values
- for ( Int_t ichamber = 0; ichamber < 14; ++ichamber )
+ for ( Int_t ichamber = 0; ichamber < nchambers; ++ichamber )
{
printf(">>> Chamber %2d nChannels Bending %5d nChannels NonBending %5d \n",
ichamber+1,
cHoccupancyBending[ichamber],
- cHoccupancyNonBending[ichamber]);
- printf(">>> Chamber %2d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
- ichamber+1,
- 100.*((Float_t) cHoccupancyBending[ichamber])/((Float_t) cHchannelsBending[ichamber]),
- 100.*((Float_t) cHoccupancyNonBending[ichamber])/((Float_t) cHchannelsBending[ichamber]) );
+ cHoccupancyNonBending[ichamber]);
+ if ( cHchannelsBending[ichamber] != 0 && cHchannelsBending[ichamber] ) {
+ printf(">>> Chamber %2d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
+ ichamber+1,
+ 100.*((Float_t) cHoccupancyBending[ichamber])/((Float_t) cHchannelsBending[ichamber]),
+ 100.*((Float_t) cHoccupancyNonBending[ichamber])/((Float_t) cHchannelsBending[ichamber]));
+ }
if ( perDetEle )
{
idetele+100*(ichamber+1),
dEoccupancyBending[ichamber][idetele],
dEoccupancyNonBending[ichamber][idetele]);
- printf(">>> DetEle %4d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
- idetele+100*(ichamber+1),
- 100.*((Float_t) dEoccupancyBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]),
- 100.*((Float_t) dEoccupancyNonBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]));
+
+ if ( dEchannelsBending[ichamber][idetele] != 0 && dEchannelsBending[ichamber][idetele] !=0 ) {
+ printf(">>> DetEle %4d Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
+ idetele+100*(ichamber+1),
+ 100.*((Float_t) dEoccupancyBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]),
+ 100.*((Float_t) dEoccupancyNonBending[ichamber][idetele])/((Float_t) dEchannelsBending[ichamber][idetele]));
+ }
}
}
}
}
- printf(">>> Muon Spectrometer Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
- 100.*((Float_t) totaloccupancyBending)/((Float_t) totalchannelsBending),
- 100.*((Float_t) totaloccupancyNonBending)/((Float_t) totalchannelsNonBending) );
-
+ if ( totalchannelsBending != 0 && totalchannelsNonBending != 0 ) {
+ printf(">>> Muon Spectrometer Occupancy Bending %5.2f %% Occupancy NonBending %5.2f %% \n",
+ 100.*((Float_t) totaloccupancyBending)/((Float_t) totalchannelsBending),
+ 100.*((Float_t) totaloccupancyNonBending)/((Float_t) totalchannelsNonBending));
+ }
}
//_____________________________________________________________________________