// $Id$ /**
//_____________________________________________________________
// AliHLTTPCDisplayCharge
//
// Display class for the HLT TPC-Charge events.
*/ // Author: Jochen Thaeder //*-- Copyright © ALICE HLT Group #include #include #include #include #include #include #ifdef use_aliroot #include #include #include #include #endif #include "AliHLTStdIncludes.h" #include "AliHLTTPCDefinitions.h" #include "AliHLTDataTypes.h" #include "AliHLTTPCSpacePointData.h" #include "AliHLTTPCClusterDataFormat.h" #include "AliHLTTPCLogging.h" #include "AliHLTTPCTransform.h" #include "AliHLTTPCDigitReaderPacked.h" #include "AliHLTTPCTrack.h" #include "AliHLTTPCTrackArray.h" #include "AliHLTTPCDisplayMain.h" #include "AliHLTTPCDisplayCharge.h" #if __GNUC__ >= 3 using namespace std; #endif ClassImp(AliHLTTPCDisplayCharge) //____________________________________________________________________________________________________ AliHLTTPCDisplayCharge::AliHLTTPCDisplayCharge(AliHLTTPCDisplayMain* display) { // constructor fDisplay = display; fBinX[0] = 0; fBinX[1] = 1; fTmpEvent = 0; fMaxCharge = 0; fHistcharge = new TH1F ("fHistcharge","Cluster distribution per charge;charge;#cluster",5000,0,30000); fHistcharge->SetTitleSize(0.03); fHistcharge->GetXaxis()->SetLabelSize(0.03); fHistcharge->GetXaxis()->SetTitleSize(0.03); fHistcharge->GetYaxis()->SetLabelSize(0.03); fHistcharge->GetYaxis()->SetTitleSize(0.03); } //____________________________________________________________________________________________________ AliHLTTPCDisplayCharge::~AliHLTTPCDisplayCharge() { // destructor if ( fHistcharge){ delete fHistcharge; fHistcharge = NULL; } } //____________________________________________________________________________________________________ void AliHLTTPCDisplayCharge::Reset(){ fHistcharge->Reset(); } //____________________________________________________________________________________________________ void AliHLTTPCDisplayCharge::Save(){ fDisplay->GetCanvasCharge()->SaveAs("HLT-ChargeView.eps"); } //____________________________________________________________________________________________________ void AliHLTTPCDisplayCharge::Fill(){ // Fill Charge Histogram Int_t maxCharge = 0; for (Int_t slice=0; slice <= 35; slice++){ Int_t currenttrack = -1; if (fDisplay->ExistsTrackData() && fDisplay->GetSelectTrackSwitch()) currenttrack = fDisplay->GetGlobalTrack(slice); if (!fDisplay->GetDisplaySlice(slice)) continue; for(Int_t patch=0;patch<6;patch++){ AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(slice,patch); if(!points) continue; for(Int_t i=0; i< fDisplay->GetNumberSpacePoints(slice,patch); i++){ // Used cluster only if (fDisplay->GetSelectCluster() == 1 && points[i].fUsed == kFALSE) continue; // Unused cluster only if (fDisplay->GetSelectCluster() == 2 && points[i].fUsed == kTRUE) continue; // if single track is selcted draw only cluster for this track if (fDisplay->GetSelectCluster() == 1 && fDisplay->GetSelectTrackSwitch() && points[i].fTrackN != currenttrack) continue; // Fill Charge Histogram fHistcharge->Fill(points[i].fCharge); if ((Int_t)points[i].fCharge > maxCharge ) maxCharge = (Int_t) points[i].fCharge; } } // END - PATCH LOOP } // END - SLICE LOOP fMaxCharge = maxCharge; } //____________________________________________________________________________________________________ void AliHLTTPCDisplayCharge::Draw(){ fDisplay->GetCanvasCharge()->cd(); fDisplay->GetCanvasCharge()->Clear(); // Keep Zoom if (!fDisplay->GetKeepView() || (fBinX[1]>fMaxCharge)){ fBinX[0] = 0; fBinX[1] = fMaxCharge; } fHistcharge->SetAxisRange(fBinX[0],fBinX[1]); fHistcharge->SetStats(kFALSE); fHistcharge->Draw(); fDisplay->GetCanvasCharge()->Modified(); fDisplay->GetCanvasCharge()->Update(); // Keep Zoom fDisplay->GetCanvasCharge()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayCharge",(void*) this,"ExecEvent(Int_t,Int_t,Int_t,TObject*)"); } //____________________________________________________________________________________________________ void AliHLTTPCDisplayCharge::ExecEvent(Int_t event, Int_t px, Int_t py, TObject *selected){ // Saves the Zoom Position of the Histogram // - Mouse down on Axis : StartPoint of Range if (event == 1 && selected->InheritsFrom("TAxis")) fTmpEvent = 1; // - Mouse pressed on Axis : Real Zoom process not only click else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 1) fTmpEvent = 21; // - Mouse pressed on Axis : Still pressed else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 21) return; // - Mouse up on Axis : End Point of Rangex else if (event == 11 && selected->InheritsFrom("TAxis") && fTmpEvent == 21){ TAxis * axis = (TAxis*) selected; if (selected == fHistcharge->GetXaxis() ){ fBinX[0] = axis->GetFirst() -1; fBinX[1] = axis->GetLast() -1; } fTmpEvent = 0; } else fTmpEvent = 0; }