#include "AliMonitorHLT.h"
-#ifdef ALI_HLT
+#include "AliMonitorTrend.h"
+#include "AliTPCParam.h"
+#include "AliLog.h"
+#include <TFolder.h>
#include <stdlib.h>
-#include "AliL3MemHandler.h"
-#include "AliL3SpacePointData.h"
-#include "AliL3TrackArray.h"
-#include "AliL3Track.h"
-#include "AliL3Transform.h"
-#endif
+#include "AliHLTMemHandler.h"
+#include "AliHLTSpacePointData.h"
+#include "AliHLTTrackArray.h"
+#include "AliHLTTrack.h"
+#include "AliHLTTransform.h"
+#include "AliHLTVertex.h"
//_____________________________________________________________________________
-AliMonitorHLT::AliMonitorHLT(AliTPCParam* param)
+AliMonitorHLT::AliMonitorHLT(AliTPCParam* param):
+ AliMonitor(),
+ fParam(param),
+ fClustersCharge(NULL),
+ fNClustersVsRow(NULL),
+ fNClustersVsSector(NULL),
+ fNTracks(NULL),
+ fTrackPt(NULL),
+ fTrackEta(NULL),
+ fTrackPhi(NULL),
+ fTrackNHits(NULL),
+ fTrackDEdxVsP(NULL),
+ fTrackDEdx(NULL),
+ fTrackDz0(NULL),
+ fTrackDr0(NULL),
+ fTrackEtaVsPhi(NULL),
+ fPtEtaVsPhi(NULL),
+ fTrackZvsNHits(NULL),
+ fTrackXYvsNHits(NULL)
{
// create a HLT monitor object with the given parameters
- fParam = param;
}
-//_____________________________________________________________________________
-AliMonitorHLT::~AliMonitorHLT()
-{
-}
-
-
//_____________________________________________________________________________
void AliMonitorHLT::CreateHistos(TFolder* folder)
{
fTrackPt = CreateHisto1("TrackPt", "pt distribution of tracks",
90, 0, 3, "p_{t} [GeV/c]", "#Delta N/N",
- AliMonitorHisto::kNormEntries);
+ AliMonitorHisto::kNormNone);
fTrackEta = CreateHisto1("TrackEta", "eta distribution of tracks",
100, -2, 2, "#eta", "#Delta N/N",
fTrackNHits = CreateHisto1("TrackNHits", "Number of hits per track",
200, 0, 200, "N_{hits}", "#Delta N/N",
- AliMonitorHisto::kNormEntries);
+ AliMonitorHisto::kNormNone);
+
+ fTrackXYvsNHits = CreateHisto2("TrackXYvsNHits", "XY vs Number of hits per track",
+ 50, 0, 200,50,0,10,
+ "N_{hits}","Radius [cm]","#Delta N/N",
+ AliMonitorHisto::kNormNone);
+
+ fTrackZvsNHits = CreateHisto2("TrackZvsNHits", "Z vs Number of hits per track",
+ 50, 0, 200,50,-20,20,
+ "N_{hits}","Z [cm]","#Delta N/N",
+ AliMonitorHisto::kNormNone);
fTrackDEdxVsP = CreateHisto2("TrackDEdxVsP", "dE/dx of tracks",
100, 0, 3, 100, 0, 1000,
"p [GeV/c]", "dE/dx", "#Delta N/N",
AliMonitorHisto::kNormEntries);
+ fTrackDEdx = CreateHisto1("TrackDEdx", "dE/dx for tracks with 0.4<p<1.0 GeV/c",
+ 50, 0, 300,
+ "dE/dx", "#Delta N/N",
+ AliMonitorHisto::kNormEntries);
+
fTrackDz0 = CreateHisto1("TrackDz0", "Dz0 of tracks",
100, -100, 100, "#Delta z0 [cm]", "#Delta N/N",
AliMonitorHisto::kNormEntries);
130, 80, 250, "#Delta r0 [cm]", "#Delta N/N",
AliMonitorHisto::kNormEntries);
- fTrackAngle = CreateHisto1("TrackAngle", "azimutal distribution of tracks",
- 100, -4, 4, " ", "#Delta N/N",
- AliMonitorHisto::kNormEntries);
+ fTrackEtaVsPhi = CreateHisto2("TrackEtaVsPhi", "#phi vs #eta",
+ 20, -1, 1, 25, 0, 360,
+ "#eta", "#phi", "#Delta N/N",
+ AliMonitorHisto::kNormNone);
+
+ fPtEtaVsPhi = CreateHisto2("PtEtaVsPhi", "#phi vs #eta",
+ 20, -1, 1, 25, 0, 360,
+ "#eta", "#phi", "#Delta N/N",
+ AliMonitorHisto::kNormNone);
}
-#include <TCanvas.h>
//_____________________________________________________________________________
void AliMonitorHLT::FillHistos(AliRunLoader* /*runLoader*/,
- AliRawReader* /*rawReader*/)
+ AliRawReader* /*rawReader*/, AliESD* /*esd*/)
{
// fill the HLT monitor histogrms
-#ifndef ALI_HLT
- Warning("FillHistos", "the code was compiled without HLT support");
-
-#else
- AliL3MemHandler clusterHandler[36];
- AliL3SpacePointData *clusters[36];
+ AliHLTMemHandler clusterHandler[36];
+ AliHLTSpacePointData *clusters[36];
for (Int_t iSector = 0; iSector < fParam->GetNInnerSector(); iSector++) {
char fileName[256];
sprintf(fileName, "hlt/points_%d_-1.raw", iSector);
if (!clusterHandler[iSector].SetBinaryInput(fileName)) {
- Warning("FillHistos", "could not open file %s", fileName);
+ AliWarning(Form("could not open file %s", fileName));
continue;
}
- clusters[iSector] = (AliL3SpacePointData*) clusterHandler[iSector].Allocate();
+ clusters[iSector] = (AliHLTSpacePointData*) clusterHandler[iSector].Allocate();
UInt_t nClusters = 0;
clusterHandler[iSector].Binary2Memory(nClusters, clusters[iSector]);
for (UInt_t iCluster = 0; iCluster < nClusters; iCluster++) {
- AliL3SpacePointData& cluster = clusters[iSector][iCluster];
+ AliHLTSpacePointData& cluster = clusters[iSector][iCluster];
fClustersCharge->Fill(cluster.fCharge);
fNClustersVsRow->Fill(cluster.fPadRow);
fNClustersVsSector->Fill(iSector);
fNClustersVsSector->ScaleErrorBy(10.);
- AliL3MemHandler memHandler;
+ AliHLTMemHandler memHandler;
if (!memHandler.SetBinaryInput("hlt/tracks.raw")) {
- Warning("FillHistos", "could not open file hlt/tracks.raw");
+ AliWarning("could not open file hlt/tracks.raw");
return;
}
- AliL3TrackArray* tracks = new AliL3TrackArray;
+ AliHLTTrackArray* tracks = new AliHLTTrackArray;
memHandler.Binary2TrackArray(tracks);
+ Double_t xc,yc,zc;
+ AliHLTVertex vertex;
fNTracks->Fill(tracks->GetNTracks());
for (Int_t iTrack = 0; iTrack < tracks->GetNTracks(); iTrack++) {
- AliL3Track* track = tracks->GetCheckedTrack(iTrack);
+ AliHLTTrack* track = tracks->GetCheckedTrack(iTrack);
if(!track) continue;
track->CalculateHelix();
+ track->GetClosestPoint(&vertex,xc,yc,zc);
+ if(TMath::Abs(zc)>10.) continue;
fTrackPt->Fill(track->GetPt());
fTrackEta->Fill(track->GetPseudoRapidity());
fTrackPhi->Fill(track->GetPsi() * TMath::RadToDeg());
+ if(track->GetPt()>3.) {
+ fTrackEtaVsPhi->Fill(track->GetPseudoRapidity(),track->GetPsi() * TMath::RadToDeg());
+ fPtEtaVsPhi->Fill(track->GetPseudoRapidity(),track->GetPsi() * TMath::RadToDeg(),track->GetPt());
+ }
fTrackDz0->Fill(track->GetZ0());
fTrackDr0->Fill(track->GetR0());
fTrackNHits->Fill(track->GetNHits());
+ fTrackXYvsNHits->Fill(track->GetNHits(),TMath::Sqrt(xc*xc+yc*yc));
+ fTrackZvsNHits->Fill(track->GetNHits(),zc);
// Track dEdx
Int_t nc=track->GetNHits();
Int_t iSector = (hitID>>25) & 0x7f;
UInt_t position = hitID&0x3fffff;
UChar_t padrow = clusters[iSector][position].fPadRow;
- Float_t pWidth = AliL3Transform::GetPadPitchWidthLow();
+ Float_t pWidth = AliHLTTransform::GetPadPitchWidthLow();
if (padrow>63)
- pWidth = AliL3Transform::GetPadPitchWidthUp();
+ pWidth = AliHLTTransform::GetPadPitchWidthUp();
Float_t corr=1.; if (padrow>63) corr=0.67;
sampleDEdx[iHit] = clusters[iSector][position].fCharge/pWidth*corr;
Double_t crossingangle = track->GetCrossingAngle(padrow,iSector);
- fTrackAngle->Fill(crossingangle);
Double_t s = sin(crossingangle);
Double_t t = track->GetTgl();
sampleDEdx[iHit] *= TMath::Sqrt((1-s*s)/(1+t*t));
trackDEdx /= (nu-nl+1);
fTrackDEdxVsP->Fill(track->GetP(),trackDEdx);
+ if(track->GetP()>0.4 && track->GetP()<1.0)
+ fTrackDEdx->Fill(trackDEdx);
}
delete tracks;
memHandler.CloseBinaryInput();
-#endif
}