1 #include "AliHLTEveMultCorr.h"
6 #include "AliHLTHOMERBlockDesc.h"
7 #include "AliHLTEveHistoMerger.h"
11 AliHLTEveMultCorr::AliHLTEveMultCorr(const char* name): AliHLTEveBase(name)
17 ,fZdcVzeroSpdCorrCanvas(0)
21 fMerger = new AliHLTEveHistoMerger();
24 AliHLTEveMultCorr::~AliHLTEveMultCorr()
36 void AliHLTEveMultCorr::ResetElements()
41 void AliHLTEveMultCorr::UpdateElements()
43 fVzeroMultCanvas->Update();
44 fZdcMultCanvas->Update();
45 fTrackMultCanvas->Update();
46 fCorrCanvas->Update();
47 fEtCorrCanvas->Update();
48 fZdcVzeroSpdCorrCanvas->Update();
52 void AliHLTEveMultCorr::ProcessBlock(AliHLTHOMERBlockDesc* block)
56 TList *hlist = dynamic_cast<TList*>(block->GetTObject());
59 hlist = dynamic_cast<TList*>(fMerger->Process(hlist, block->GetSpecification()));
68 fMyList = dynamic_cast<TList*>(hlist->Clone());
74 if (hlist->Contains("fVzeroMult")) // These are the correlation histograms
80 //VZERO multiplicity hists
81 if (!fVzeroMultCanvas)
83 fVzeroMultCanvas = CreateCanvas("V0 M", "V0 Multiplicities");
84 fVzeroMultCanvas->Divide(2, 2);
86 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fVzeroMult"));
87 AddHistogramToCanvas(oneDf, fVzeroMultCanvas, cd);
89 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fVzeroMultAC"));
90 AddHistogramToCanvas(twoDf, fVzeroMultCanvas, cd);
92 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fVzeroFlaggedMult"));
93 AddHistogramToCanvas(oneDf, fVzeroMultCanvas, cd);
95 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fVzeroFlaggedMultAC"));
96 AddHistogramToCanvas(twoDf, fVzeroMultCanvas, cd);
99 //ZDC multiplicity hists
102 fZdcMultCanvas = CreateCanvas("ZDC M", "ZDC Multiplicities");
103 fZdcMultCanvas->Divide(3, 3);
105 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcEzdc"));
106 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
108 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcEzn"));
109 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
111 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcEzp"));
112 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
114 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcEzem"));
115 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
117 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcNpart"));
118 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
120 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fZdcB"));
121 AddHistogramToCanvas(oneDf, fZdcMultCanvas, cd);
123 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fZdcEzemEzdc"));
124 AddHistogramToCanvas(twoDf, fZdcMultCanvas, cd);
128 if (!fTrackMultCanvas)
130 fTrackMultCanvas = CreateCanvas("Track M", "Track Multiplicities");
131 fTrackMultCanvas->Divide(2, 2);
133 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fTpcNch2"));
134 AddHistogramToCanvas(oneDf, fTrackMultCanvas, cd);
136 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fTpcNch3"));
137 AddHistogramToCanvas(oneDf, fTrackMultCanvas, cd);
139 oneDf = dynamic_cast<TH1F*>(FindHistogram(hlist, "fSpdNClusters"));
141 AddHistogramToCanvas(oneDf, fTrackMultCanvas, cd);
147 fCorrCanvas = CreateCanvas("Corr", "Multiplicity Correlations");
148 fCorrCanvas->Divide(3, 2);
150 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzdcNch"));
151 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
153 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzeroNch"));
154 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
156 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrSpdTpcNch"));
157 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
159 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzemNch"));
160 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
162 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzdcVzero"));
163 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
165 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzemVzero"));
166 AddHistogramToCanvas(twoDf, fCorrCanvas, cd);
172 fEtCorrCanvas = CreateCanvas("ET", "E_{T} Correlations");
173 fEtCorrCanvas->Divide(3, 2);
175 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrZdcTotEvsPhosTotEt"));
176 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
178 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrZdcTotEvsEmcalTotEt"));
179 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
181 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrZdcTotEvsTotEt"));
182 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
184 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzerovsPhosTotEt"));
185 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
187 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzerovsEmcalTotEt"));
188 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
190 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzerovsTotEt"));
191 AddHistogramToCanvas(twoDf, fEtCorrCanvas, cd);
195 if (!fZdcVzeroSpdCorrCanvas)
197 fZdcVzeroSpdCorrCanvas = CreateCanvas("ZDC/V0 vs SPD", "ZDC/V0 vs. SPD");
198 fZdcVzeroSpdCorrCanvas->Divide(3, 2);
201 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzeroSpd"));
202 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
204 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzeroASpd"));
205 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
207 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrVzeroCSpd"));
208 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
210 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzdcSpd"));
211 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
213 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzdcASpd"));
214 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
216 twoDf = dynamic_cast<TH2F*>(FindHistogram(hlist, "fCorrEzdcCSpd"));
217 AddHistogramToCanvas(twoDf, fZdcVzeroSpdCorrCanvas, cd);
221 AliWarning("This block does not contain what you think it contains!");
226 AliWarning("There is no TList object in the block");
232 void AliHLTEveMultCorr::AddHistogramsToCanvas(AliHLTHOMERBlockDesc* /*block*/, TCanvas* /*canvas*/, Int_t& /*cdCount*/)
236 void AliHLTEveMultCorr::AddHistogramToCanvas(TH1* hist, TCanvas* canvas, Int_t& cdCount, Bool_t zoom)
242 if (!strcmp(hist->ClassName(), "TH1F"))
245 TPad * pad = dynamic_cast<TPad*>(canvas->cd(cdCount));
246 if(pad) pad->SetLogy();
249 TH1F *h = dynamic_cast<TH1F*>(hist);
252 h->GetXaxis()->SetRange(0, (Int_t) (h->GetMaximumBin() + h->GetMaximumBin()*0.2));
257 else if (!strcmp(hist->ClassName(), "TH2F"))
260 TH2F *h = dynamic_cast<TH2F*>(hist);
265 h->GetXaxis()->SetRange(0, (Int_t) (h->GetMaximumBin() + h->GetMaximumBin()*0.2));
266 h->GetYaxis()->SetRange(0, (Int_t) (h->GetMaximumBin() + h->GetMaximumBin()*0.2));
276 msg.Form("I don't want histograms of type %s", hist->ClassName());
277 AliWarning(msg.Data());
282 AliWarning("You gave me a null pointer!");
286 TH1* AliHLTEveMultCorr::FindHistogram(TCollection* coll, const char* name)
289 TH1 *hist = dynamic_cast<TH1*>(coll->FindObject(name));
292 msg.Form("Could not find object %s", name);