1 //____________________________________________________________________
3 // $Id: DrawHitsSDigits.C 20907 2007-09-25 08:44:03Z cholm $
5 // Script that contains a class to draw eloss from hits, versus ADC
6 // counts from sdigits, using the AliFMDInputHits class in the util library.
8 // It draws the energy loss versus the p/(mq^2). It can be overlayed
9 // with the Bethe-Bloc curve to show how the simulation behaves
10 // relative to the expected.
12 // Use the script `Compile.C' to compile this class using ACLic.
15 #include <AliFMDHit.h>
16 #include <AliFMDSDigit.h>
17 #include <AliFMDInput.h>
18 #include <AliFMDEdepMap.h>
25 /** @class DrawHitsSDigits
26 @brief Draw hit energy loss versus sdigit ADC
29 Root> Compile("DrawHitsSDigits.C")
30 Root> DrawHitsSDigits c
35 class DrawHitsSDigits : public AliFMDInput
38 TH2D* fElossVsAdc; // Histogram
41 //__________________________________________________________________
42 DrawHitsSDigits(Int_t n=900, Double_t emin=1e-3, Double_t emax=10,
43 Int_t m=1100, Double_t amin=-0.5, Double_t amax=1099.5)
47 TArrayF eloss(MakeLogScale(n, emin, emax));
50 for (Int_t i = 1; i < m+1; i++) adcs[i] = adcs[i-1] + (amax-amin)/m;
51 fElossVsAdc = new TH2D("bad", "#Delta E vs. ADC",
52 eloss.fN-1, eloss.fArray, adcs.fN-1, adcs.fArray);
53 fElossVsAdc->SetXTitle("#Delta E/#Delta x [MeV/cm]");
54 fElossVsAdc->SetYTitle("ADC value");
56 //__________________________________________________________________
58 @param ev Event number
59 @return @c false on error */
60 Bool_t Begin(Int_t ev)
63 return AliFMDInput::Begin(ev);
65 //__________________________________________________________________
66 Bool_t ProcessHit(AliFMDHit* hit, TParticle*)
68 Info("ProcessHit", "Processing hit %p", hit);
69 // Cache the energy loss
70 if (!hit) return kFALSE;
71 UShort_t det = hit->Detector();
72 Char_t rng = hit->Ring();
73 UShort_t sec = hit->Sector();
74 UShort_t str = hit->Strip();
76 AliWarning(Form("Bad strip number %d in hit", str));
79 fMap(det, rng, sec, str).fEdep += hit->Edep();
80 fMap(det, rng, sec, str).fN++;
84 //__________________________________________________________________
85 Bool_t ProcessSDigit(AliFMDSDigit* sdigit)
87 Info("ProcessSDigit", "Processing sdigit %p", sdigit);
88 if (!sdigit) return kFALSE;
89 UShort_t det = sdigit->Detector();
90 Char_t rng = sdigit->Ring();
91 UShort_t sec = sdigit->Sector();
92 UShort_t str = sdigit->Strip();
94 AliWarning(Form("Bad strip number %d in sdigit", str));
97 fElossVsAdc->Fill(fMap(det, rng, sec, str).fEdep, sdigit->Counts());
101 //__________________________________________________________________
104 gStyle->SetPalette(1);
105 gStyle->SetOptTitle(0);
106 gStyle->SetCanvasColor(0);
107 gStyle->SetCanvasBorderSize(0);
108 gStyle->SetPadColor(0);
109 gStyle->SetPadBorderSize(0);
110 fElossVsAdc->SetStats(kFALSE);
111 fElossVsAdc->Draw("COLZ");
115 ClassDef(DrawHitsSDigits,0);
118 //____________________________________________________________________