#include "AliMonitorTPC.h"
+#include "AliMonitorDataTPC.h"
+#include "AliMonitorHisto.h"
+#include "AliMonitorTrend.h"
+#include "AliTPCParam.h"
#include "AliTPCRawStream.h"
#include "AliTPCClustersRow.h"
#include "AliTPCclusterMI.h"
#include "AliTPCtrack.h"
+#include "AliRunLoader.h"
+#include "AliRawReader.h"
+#include <TFolder.h>
+#include <TTree.h>
-ClassImp(AliMonitorDataTPC)
-
+ClassImp(AliMonitorTPC)
-//_____________________________________________________________________________
-AliMonitorDataTPC::AliMonitorDataTPC()
-{
- fPt = fEta = fPhi = NULL;
- fSize = 0;
-}
//_____________________________________________________________________________
-AliMonitorDataTPC::AliMonitorDataTPC(Int_t size)
+AliMonitorTPC::AliMonitorTPC(AliTPCParam* param)
{
- fPt = new Float_t[size];
- fEta = new Float_t[size];
- fPhi = new Float_t[size];
- fSize = size;
-}
+// create a TPC monitor object with the given parameters
-//_____________________________________________________________________________
-AliMonitorDataTPC::~AliMonitorDataTPC()
-{
- delete[] fPt;
- delete[] fEta;
- delete[] fPhi;
+ fParam = param;
+ fData = new AliMonitorDataTPC(10000);
}
//_____________________________________________________________________________
-void AliMonitorDataTPC::SetSize(Int_t size)
+AliMonitorTPC::AliMonitorTPC(const AliMonitorTPC& monitor) :
+ AliMonitor(monitor)
{
- if (size > fSize) {
- delete[] fPt;
- delete[] fEta;
- delete[] fPhi;
- fPt = new Float_t[size];
- fEta = new Float_t[size];
- fPhi = new Float_t[size];
- fSize = size;
- }
+ Fatal("AliMonitorTPC", "copy constructor not implemented");
}
-
-
-ClassImp(AliMonitorTPC)
-
-
//_____________________________________________________________________________
-AliMonitorTPC::AliMonitorTPC(AliTPCParam* param)
+AliMonitorTPC& AliMonitorTPC::operator = (const AliMonitorTPC& /*monitor*/)
{
-// create a TPC monitor object with the given parameters
-
- fParam = param;
- fData = new AliMonitorDataTPC(10000);
+ Fatal("operator =", "assignment operator not implemented");
+ return *this;
}
//_____________________________________________________________________________
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",
AliMonitorHisto::kNormEntries);
fTrackPhi->SetDescription("The phi distribution should be flat on average.\nIf it is not flat check for dead TPC sectors.");
+ fTrackNCl = CreateHisto1("TrackNCl", "Number of clusters per track",
+ 200, 0, 200, "N_{clusters}", "#Delta N/N",
+ AliMonitorHisto::kNormNone);
+
fTrackDEdxVsP = CreateHisto2("TrackDEdxVsP", "dE/dx of tracks",
100, 0, 3, 100, 0, 200,
"p [GeV/c]", "dE/dx", "#Delta N/N",
AliMonitorHisto::kNormEntries);
+
+ fTrackDEdx = CreateHisto1("TrackDEdx", "dE/dx of tracks with 0.4<p<1.0 GeV/c",
+ 50, 0, 100,
+ "dE/dx", "#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);
+
}
AliTPCtrack* track = new AliTPCtrack;
tracks->SetBranchAddress("tracks", &track);
- fNTracks->Fill(tracks->GetEntries());
- fData->fNTracks = (Int_t) tracks->GetEntries();
- fData->SetSize(fData->fNTracks);
- for (Int_t i = 0; i < tracks->GetEntries(); i++) {
+ Int_t nTracks = (Int_t) tracks->GetEntries();
+ fNTracks->Fill(nTracks);
+ fData->SetNTracks(nTracks);
+ for (Int_t i = 0; i < nTracks; i++) {
tracks->GetEntry(i);
fTrackPt->Fill(track->Pt());
fTrackEta->Fill(track->Eta());
fTrackPhi->Fill(track->Phi() * TMath::RadToDeg());
+ if(track->Pt()>3.) {
+ fTrackEtaVsPhi->Fill(track->Eta(),track->Phi() * TMath::RadToDeg());
+ fPtEtaVsPhi->Fill(track->Eta(),track->Phi() * TMath::RadToDeg(),track->Pt());
+ }
+ fTrackNCl->Fill(track->GetNumberOfClusters());
fTrackDEdxVsP->Fill(track->P(), track->GetdEdx());
+ if(track->P()>0.4 && track->P()<1.0)
+ fTrackDEdx->Fill(track->GetdEdx());
- fData->fPt[i] = track->Pt();
- fData->fEta[i] = track->Eta();
- fData->fPhi[i] = track->Phi() * TMath::RadToDeg();
+ fData->SetData(i, track->Pt(), track->Eta(),
+ track->Phi() * TMath::RadToDeg());
}
delete track;