// //
///////////////////////////////////////////////////////////////////////////////
+#include <TFolder.h>
+#include <TTree.h>
+#include <TVector3.h>
-#include "AliMonitorITS.h"
-#include "AliMonitorHisto.h"
-#include "AliITSgeom.h"
+#include "AliLog.h"
+#include "AliESDEvent.h"
+#include "AliESDtrack.h"
#include "AliITSRawStreamSDD.h"
#include "AliITSRawStreamSSD.h"
#include "AliITSclusterV2.h"
-#include "AliITStrackV2.h"
+#include "AliITSgeom.h"
+#include "AliMonitorHisto.h"
+#include "AliMonitorITS.h"
+#include "AliRawReader.h"
#include "AliRunLoader.h"
-#include <TFolder.h>
-#include <TTree.h>
-
ClassImp(AliMonitorITS)
//_____________________________________________________________________________
-AliMonitorITS::AliMonitorITS(AliITSgeom* geom)
+AliMonitorITS::AliMonitorITS(AliITSgeom* geom):
+ AliMonitor(),
+ fGeom(geom),
+ fSDDDigitsCharge(NULL),
+ fSSDDigitsCharge(NULL),
+ fSDDClustersCharge(NULL),
+ fSSDClustersCharge(NULL),
+ fSPDNClustersVsModule(NULL),
+ fSDDNClustersVsModule(NULL),
+ fSSDNClustersVsModule(NULL),
+ fNClustersVsLayer(NULL),
+ fNTracks(NULL),
+ fNTracksITSTPC(NULL),
+ fTrackPt(NULL),
+ fTrackEta(NULL),
+ fTrackPhi(NULL),
+ fTrackDEdxVsP(NULL)
+
{
// create a ITS monitor object with the given geometry
- fGeom = geom;
}
-//_____________________________________________________________________________
-AliMonitorITS::AliMonitorITS(const AliMonitorITS& monitor) :
- AliMonitor(monitor)
-{
- Fatal("AliMonitorITS", "copy constructor not implemented");
-}
-
-//_____________________________________________________________________________
-AliMonitorITS& AliMonitorITS::operator = (const AliMonitorITS& /*monitor*/)
-{
- Fatal("operator =", "assignment operator not implemented");
- return *this;
-}
-
//_____________________________________________________________________________
void AliMonitorITS::CreateHistos(TFolder* folder)
{
AliMonitorHisto::kNormEntries);
fTrackPhi = CreateHisto1("TrackPhi", "phi distribution of tracks",
- 120, 0, 360, "#phi [#circ]", "#Delta N/N",
+ 120, -180, 180, "#phi [#circ]", "#Delta N/N",
AliMonitorHisto::kNormEntries);
fTrackDEdxVsP = CreateHisto2("TrackDEdxVsP", "dE/dx of tracks",
//_____________________________________________________________________________
void AliMonitorITS::FillHistos(AliRunLoader* runLoader,
- AliRawReader* rawReader)
+ AliRawReader* rawReader, AliESDEvent* esd)
{
// fill the ITS monitor histogrms
itsLoader->UnloadRecPoints();
- itsLoader->LoadTracks();
- TTree* tracks = itsLoader->TreeT();
- if (!tracks) return;
- AliITStrackV2* track = new AliITStrackV2;
- tracks->SetBranchAddress("tracks", &track);
-
- fNTracks->Fill(tracks->GetEntries());
- for (Int_t i = 0; i < tracks->GetEntries(); i++) {
- tracks->GetEntry(i);
- fTrackPt->Fill(track->Pt());
- fTrackEta->Fill(track->Eta());
- fTrackPhi->Fill(track->Phi() * TMath::RadToDeg());
- fTrackDEdxVsP->Fill(track->P(), track->GetdEdx());
- }
-
- AliLoader* tpcLoader = runLoader->GetLoader("TPCLoader");
- if (tpcLoader) {
- tpcLoader->LoadTracks();
- TTree* tracksTPC = tpcLoader->TreeT();
- if (tracksTPC) {
- fNTracksITSTPC->Fill(tracks->GetEntries(), tracksTPC->GetEntries());
- }
- tpcLoader->UnloadTracks();
+ Int_t nTracks = 0;
+ Int_t nTPCTracks = 0;
+ for (Int_t i = 0; i < esd->GetNumberOfTracks(); i++) {
+ AliESDtrack* track = esd->GetTrack(i);
+ if (!track) continue;
+ if ((track->GetStatus() | AliESDtrack::kTPCin) != 0) nTPCTracks++;
+ if ((track->GetStatus() | AliESDtrack::kITSin) == 0) continue;
+ nTracks++;
+
+ Double_t pxyz[3];
+ track->GetPxPyPz(pxyz);
+ TVector3 pTrack(pxyz);
+ fTrackPt->Fill(pTrack.Pt());
+ fTrackEta->Fill(pTrack.Eta());
+ fTrackPhi->Fill(pTrack.Phi() * TMath::RadToDeg());
+ fTrackDEdxVsP->Fill(pTrack.Mag(), track->GetITSsignal());
}
-
- delete track;
- itsLoader->UnloadTracks();
+ fNTracks->Fill(nTracks);
+ fNTracksITSTPC->Fill(nTracks, nTPCTracks);
}