#include "AliMUONDisplay.h"
#include "AliMUONPoints.h"
#include "TParticle.h"
-#include "AliMUONTriggerDecision.h"
+#include "AliMUONGlobalTrigger.h"
#include "AliHeader.h"
#include "AliMUONHit.h"
#include "AliMUONResponse.h"
#include "AliMUONChamber.h"
#include "AliMUONConstants.h"
+#include "AliMC.h"
// to manage the same zoom on both cathodes
}
//_____________________________________________________________________________
-AliMUONDisplay::AliMUONDisplay(Int_t size)
+AliMUONDisplay::AliMUONDisplay(Int_t size, AliLoader * loader)
{
// Create an event display object.
// A canvas named "edisplay" is created with a vertical size in pixels
fButtons->SetEditable(kFALSE);
fCanvas->Update();
fNextCathode = kFALSE;
+ fLoader = loader;
+ // initialize container
+ if(fLoader)
+ fMUONData = new AliMUONData(fLoader,"MUON","MUON");
+ else
+ fMUONData =0x0;
}
AliMUONDisplay::AliMUONDisplay(const AliMUONDisplay & display):AliDisplay(display)
Float_t dx = xmax-xmin;
Float_t dy = ymax-ymin;
+ AliRunLoader * RunLoader;
+ if (fLoader)
+ RunLoader = fLoader->GetRunLoader();
+ else
+ RunLoader = 0x0;
if (strlen(option) == 0) {
title->Draw();
char ptitle[100];
sprintf(ptitle, "Alice event:%d Run:%d Chamber:%d Cathode:%d",
- gAlice->GetHeader()->GetEvent(),
+ RunLoader->GetEventNumber(),
gAlice->GetHeader()->GetRun(),
fChamber,
fCathode);
title->AddText(ptitle);
- Int_t nparticles = gAlice->Particles()->GetEntriesFast();
+ Int_t nparticles = gAlice->GetMCApp()->Particles()->GetEntriesFast();
sprintf(ptitle,"Nparticles = %d Nhits = %d Npads fired = %d",
nparticles, fHitsCuts,fClustersCuts);
title->AddText(ptitle);
void AliMUONDisplay::DrawView(Float_t theta, Float_t phi, Float_t psi)
{
// Draw a view of MUON clusters
- printf("\n Draw View");
+ printf("\n Draw View\n");
gPad->SetCursor(kWatch);
// gPad->SetFillColor(39);
AliMUONChamber* iChamber;
AliSegmentation* segmentation;
AliMUONResponse* response;
+
+ GetMUONData()->SetTreeAddress("D");
- TClonesArray *muonDigits = pMUON->GetMUONData()->Digits(chamber-1);
+ TClonesArray *muonDigits = GetMUONData()->Digits(chamber-1);
if (muonDigits == 0) return;
-// gAlice->ResetDigits();
+ gAlice->ResetDigits();
Int_t nent = 0;
- if (pMUON->GetLoader()->TreeD()) {
- nent = (Int_t) pMUON->GetLoader()->TreeD()->GetEntries();
+ if (GetLoader()->TreeD()) {
+ nent = (Int_t) GetLoader()->TreeD()->GetEntries();
printf(" entries %d \n", nent);
// gAlice->TreeD()->GetEvent(nent-2+cathode-1);
- pMUON->GetMUONData()->GetCathode(cathode-1);
+ GetMUONData()->GetCathode(cathode-1);
}
Int_t ndigits = muonDigits->GetEntriesFast();
AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
AliMUONChamber* iChamber;
- TClonesArray *muonRawClusters = pMUON->GetMUONData()->RawClusters(chamber-1);
+ GetMUONData()->SetTreeAddress("RC");
+ TClonesArray *muonRawClusters = GetMUONData()->RawClusters(chamber-1);
if (muonRawClusters == 0) return;
Int_t nent = 0;
- if (pMUON->GetMUONData()->TreeR()) {
- nent=(Int_t) pMUON->GetMUONData()->TreeR()->GetEntries();
- pMUON->GetMUONData()->TreeR()->GetEvent(0);
+ if (GetMUONData()->TreeR()) {
+ nent=(Int_t) GetMUONData()->TreeR()->GetEntries();
+ GetMUONData()->TreeR()->GetEvent(0);
}
Int_t nrawcl = muonRawClusters->GetEntriesFast();
points = new AliMUONPoints(nrawcl);
for (Int_t iraw=0;iraw<nrawcl;iraw++) {
mRaw = (AliMUONRawCluster*)muonRawClusters->UncheckedAt(iraw);
- fRpoints->AddAt(points,iraw);
points->SetMarkerColor(51);
points->SetMarkerStyle(2);
points->SetMarkerSize(1.);
points->SetHitIndex(-1);
points->SetTrackIndex(-1);
points->SetDigitIndex(-1);
- points->SetPoint(iraw,mRaw->fX[0],mRaw->fY[0],zpos);
+ points->SetPoint(iraw,mRaw->GetX(0),mRaw->GetY(0),zpos);
+ fRpoints->AddAt(points,iraw);
+ // printf("%f and %f and %f\n",mRaw->GetX(0),mRaw->GetY(0),mRaw->GetZ(0));
}
}
//___________________________________________
void AliMUONDisplay::LoadHits(Int_t chamber)
{
-// Read hits info and store x,y,z info in arrays fPhits
-// Loop on all detectors
+ // Read hits info and store x,y,z info in arrays fPhits
+ // Loop on all detectors
if (chamber > 14) return;
Int_t track;
iChamber = &(pMUON->Chamber(chamber-1));
Float_t zpos=iChamber->Z();
- Int_t ntracks = (Int_t)pMUON->GetMUONData()->TreeH()->GetEntries(); //skowron
- Int_t nthits = 0;
- for (track = 0; track < ntracks; track++) {
- pMUON->GetMUONData()->ResetHits();
- pMUON->GetMUONData()->GetTrack(track);//skowron
- TClonesArray *muonHits = pMUON->GetMUONData()->Hits();
+
+ if (GetMUONData()->TreeH()) {
+ GetMUONData()->SetTreeAddress("H");
+ Int_t ntracks = (Int_t)GetMUONData()->TreeH()->GetEntries(); //skowron
+ Int_t nthits = 0;
+ for (track = 0; track < ntracks; track++) {
+ GetMUONData()->ResetHits();
+ GetMUONData()->GetTrack(track);//skowron
+ TClonesArray *muonHits = GetMUONData()->Hits();
if (muonHits == 0) return;
nthits += muonHits->GetEntriesFast();
- }
- if (fPhits == 0) fPhits = new TObjArray(nthits);
- Int_t nhold=0;
- for (track=0; track<ntracks;track++) {
- pMUON->GetMUONData()->ResetHits();
- pMUON->GetMUONData()->GetTrack(track);//skowron
- TClonesArray *muonHits = pMUON->GetMUONData()->Hits();
+ }
+ if (fPhits == 0) fPhits = new TObjArray(nthits);
+ Int_t nhold=0;
+ for (track=0; track<ntracks;track++) {
+ GetMUONData()->ResetHits();
+ GetMUONData()->GetTrack(track);//skowron
+ TClonesArray *muonHits = GetMUONData()->Hits();
if (muonHits == 0) return;
Int_t nhits = muonHits->GetEntriesFast();
if (nhits == 0) continue;
AliMUONPoints *points = 0;
Int_t npoints=1;
for (Int_t hit=0;hit<nhits;hit++) {
- mHit = (AliMUONHit*)muonHits->UncheckedAt(hit);
- Int_t nch = mHit->Chamber(); // chamber number
- if (nch != chamber) continue;
- //
- // Retrieve info and set the objects
- //
- points = new AliMUONPoints(npoints);
- fPhits->AddAt(points,nhold+hit);
- points->SetMarkerColor(kRed);
- points->SetMarkerStyle(5);
- points->SetMarkerSize(1.);
- points->SetParticle(mHit->Track());
- points->SetHitIndex(hit);
- points->SetTrackIndex(track);
- points->SetDigitIndex(-1);
- points->SetPoint(0,mHit->X(),mHit->Y(),zpos);
+ mHit = (AliMUONHit*)muonHits->UncheckedAt(hit);
+ Int_t nch = mHit->Chamber(); // chamber number
+ if (nch != chamber) continue;
+ //
+ // Retrieve info and set the objects
+ //
+ points = new AliMUONPoints(npoints);
+ fPhits->AddAt(points,nhold+hit);
+ points->SetMarkerColor(kRed);
+ points->SetMarkerStyle(5);
+ points->SetMarkerSize(1.);
+ points->SetParticle(mHit->Track());
+ points->SetHitIndex(hit);
+ points->SetTrackIndex(track);
+ points->SetDigitIndex(-1);
+ points->SetPoint(0,mHit->X(),mHit->Y(),zpos);
+ // printf("%f and %f and %f\n",mHit->X(),mHit->Y(),mHit->Z());
}
nhold+=nhits;
+ }
}
}
//_____________________________________________________________________________
void AliMUONDisplay::Trigger()
{
- // returns Trigger Decision for current event
- AliMUONTriggerDecision* decision= new AliMUONTriggerDecision(1);
- decision->Trigger();
-}
-
+ AliMUONGlobalTrigger* globalTrig;
+
+ GetMUONData()->SetTreeAddress("GLT");
+ GetMUONData()->GetTrigger();
+
+ globalTrig = (AliMUONGlobalTrigger*)GetMUONData()->GlobalTrigger()->UncheckedAt(0);
+ if (globalTrig == 0) return;
+
+ printf("===================================================\n");
+ printf(" Global Trigger output Low pt High pt All\n");
+
+ printf(" number of Single Plus :\t");
+ printf("%i\t",globalTrig->SinglePlusLpt());
+ printf("%i\t",globalTrig->SinglePlusHpt());
+ printf("%i\t",globalTrig->SinglePlusApt());
+ printf("\n");
+
+ printf(" number of Single Minus :\t");
+ printf("%i\t",globalTrig->SingleMinusLpt());
+ printf("%i\t",globalTrig->SingleMinusHpt());
+ printf("%i\t",globalTrig->SingleMinusApt());
+ printf("\n");
+
+ printf(" number of Single Undefined :\t");
+ printf("%i\t",globalTrig->SingleUndefLpt());
+ printf("%i\t",globalTrig->SingleUndefHpt());
+ printf("%i\t",globalTrig->SingleUndefApt());
+ printf("\n");
+
+ printf(" number of UnlikeSign pair :\t");
+ printf("%i\t",globalTrig->PairUnlikeLpt());
+ printf("%i\t",globalTrig->PairUnlikeHpt());
+ printf("%i\t",globalTrig->PairUnlikeApt());
+ printf("\n");
+
+ printf(" number of LikeSign pair :\t");
+ printf("%i\t",globalTrig->PairLikeLpt());
+ printf("%i\t",globalTrig->PairLikeHpt());
+ printf("%i\t",globalTrig->PairLikeApt());
+ printf("\n");
+ printf("===================================================\n");
+ printf("\n");
+
+
+ // // returns Trigger Decision for current event
+// AliMUONTriggerDecision* decision= new AliMUONTriggerDecision(GetLoader(),1);
+
+// // AliMUONTriggerDecision* decision= new AliMUONTriggerDecision(1);
+// AliMUONData* muonData = decision->GetMUONData();
+// muonData->SetTreeAddress("D");
+// decision->Trigger();
+}
//_____________________________________________________________________________
void AliMUONDisplay::SetChamberAndCathode(Int_t chamber, Int_t cathode)
{
//_____________________________________________________________________________
void AliMUONDisplay::ShowNextEvent(Int_t delta)
{
+ AliRunLoader * RunLoader;
+ if (fLoader)
+ RunLoader = fLoader->GetRunLoader();
+ else
+ RunLoader = 0x0;
+
// Display (current event_number + delta)
// delta = 1 shown next event
// delta = -1 show previous event
if (delta) {
- gAlice->Clear();
- Int_t currentEvent = gAlice->GetHeader()->GetEvent();
- Int_t newEvent = currentEvent + delta;
- gAlice->GetEvent(newEvent);
- fEvent=newEvent;
- if (!gAlice->TreeD()) return;
+ //RunLoader->CleanDetectors();
+ //RunLoader->CleanKinematics();
+ Int_t currentEvent = RunLoader->GetEventNumber();
+ Int_t newEvent = currentEvent + delta;
+ RunLoader->GetEvent(newEvent);
+ fEvent=newEvent;
}
-
LoadDigits(fChamber, fCathode);
fPad->cd();
Draw();
// Reset array of points
//
if (fRpoints) {
- fRpoints->Delete();
- delete fRpoints;
+ fRpoints->Clear();
+ // delete fRpoints;
fRpoints = 0;
}
}