#include "Riostream.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "AliLog.h"
#include "AliPID.h"
#include "AliPIDResponse.h"
#include "AliRsnDaughter.h"
#include "AliRsnEvent.h"
#include "AliRsnMiniMonitor.h"
ClassImp(AliRsnMiniMonitor)
AliRsnMiniMonitor::AliRsnMiniMonitor() :
TNamed(),
fType(kTypes),
fCutID(-1),
fCharge(0),
fListID(-1),
fList(0x0)
{
}
AliRsnMiniMonitor::AliRsnMiniMonitor(const char *name, EType type, Int_t cutID) :
TNamed(name, ""),
fType(type),
fCutID(cutID),
fCharge(0),
fListID(-1),
fList(0x0)
{
}
AliRsnMiniMonitor::AliRsnMiniMonitor(const AliRsnMiniMonitor ©) :
TNamed(copy),
fType(copy.fType),
fCutID(copy.fCutID),
fCharge(copy.fCharge),
fListID(copy.fListID),
fList(copy.fList)
{
}
AliRsnMiniMonitor &AliRsnMiniMonitor::operator=(const AliRsnMiniMonitor ©)
{
TNamed::operator=(copy);
if (this == ©)
return *this;
fType = copy.fType;
fCutID = copy.fCutID;
fCharge = copy.fCharge;
fListID = copy.fListID;
fList = copy.fList;
return (*this);
}
Bool_t AliRsnMiniMonitor::Init(const char *name, TList *list)
{
TString sname(name);
sname += '_';
sname += GetName();
fList = list;
if (!list) {
AliError("No list!");
return kFALSE;
}
TH1 *histogram = 0x0;
switch (fType) {
case kTrackPt:
sname += "_TrackPt_cut";
sname += fCutID;
histogram = new TH1F(sname.Data(), "", 100, 0.0, 10.0);
break;
case kdEdxTPCvsP:
sname += "_TPCsignal";
histogram = new TH2F(sname.Data(), "", 500, 0.0, 5.0, 1000, 0.0, 1000.0);
break;
case ktimeTOFvsPPion:
sname += "_TOFsignalPi";
histogram = new TH2F(sname.Data(), "", 500, 0.0, 5.0, 1000, 0.0, 200000.0);
case ktimeTOFvsPKaon:
sname += "_TOFsignalK";
histogram = new TH2F(sname.Data(), "", 500, 0.0, 5.0, 1000, 0.0, 200000.0);
break;
case ktimeTOFvsPProton:
sname += "_TOFsignalP";
histogram = new TH2F(sname.Data(), "", 500, 0.0, 5.0, 1000, 0.0, 200000.0);
break;
default:
AliError("Wrong enum type");
return kFALSE;
}
if (histogram && fList) {
histogram->Sumw2();
fList->Add(histogram);
fListID = fList->IndexOf(histogram);
AliInfo(Form("Histogram '%s' added to list in slot #%d", histogram->GetName(), fListID));
return kTRUE;
}
return kFALSE;
}
Bool_t AliRsnMiniMonitor::Fill(AliRsnDaughter *track, AliRsnEvent *event)
{
if (!fList) {
AliError("List pointer is NULL");
return kFALSE;
}
TObject *obj = fList->At(fListID);
if (!obj) {
AliError("List object is NULL");
return kFALSE;
}
Double_t valueX, valueY;
AliVTrack *vtrack = track->Ref2Vtrack();
AliPIDResponse *pid = event->GetPIDResponse();
switch (fType) {
case kTrackPt:
if (!vtrack) {
AliWarning("Required vtrack for this value");
return kFALSE;
}
if (fCharge == '+' && vtrack->Charge() <= 0) return kFALSE;
if (fCharge == '-' && vtrack->Charge() >= 0) return kFALSE;
if (fCharge == '0' && vtrack->Charge() != 0) return kFALSE;
valueX = vtrack->Pt();
((TH1F *)obj)->Fill(valueX);
return kTRUE;
case kdEdxTPCvsP:
if (!vtrack) {
AliWarning("Required vtrack for this value");
return kFALSE;
}
valueX = vtrack->GetTPCmomentum();
valueY = vtrack->GetTPCsignal();
((TH2F *)obj)->Fill(valueX, valueY);
return kTRUE;
case ktimeTOFvsPPion:
if (!vtrack) {
AliWarning("Required vtrack for this value");
return kFALSE;
}
valueX = vtrack->P();
valueY = 1E20;
if (pid) valueY = pid->NumberOfSigmasTOF(vtrack, AliPID::kPion);
((TH2F *)obj)->Fill(valueX, valueY);
return kTRUE;
case ktimeTOFvsPKaon:
if (!vtrack) {
AliWarning("Required vtrack for this value");
return kFALSE;
}
valueX = vtrack->P();
valueY = 1E20;
if (pid) valueY = pid->NumberOfSigmasTOF(vtrack, AliPID::kKaon);
((TH2F *)obj)->Fill(valueX, valueY);
return kTRUE;
case ktimeTOFvsPProton:
if (!vtrack) {
AliWarning("Required vtrack for this value");
return kFALSE;
}
valueX = vtrack->P();
valueY = 1E20;
if (pid) valueY = pid->NumberOfSigmasTOF(vtrack, AliPID::kProton);
((TH2F *)obj)->Fill(valueX, valueY);
return kTRUE;
default:
AliError("Invalid value type");
return kFALSE;
}
}
AliRsnMiniMonitor.cxx:100 AliRsnMiniMonitor.cxx:101 AliRsnMiniMonitor.cxx:102 AliRsnMiniMonitor.cxx:103 AliRsnMiniMonitor.cxx:104 AliRsnMiniMonitor.cxx:105 AliRsnMiniMonitor.cxx:106 AliRsnMiniMonitor.cxx:107 AliRsnMiniMonitor.cxx:108 AliRsnMiniMonitor.cxx:109 AliRsnMiniMonitor.cxx:110 AliRsnMiniMonitor.cxx:111 AliRsnMiniMonitor.cxx:112 AliRsnMiniMonitor.cxx:113 AliRsnMiniMonitor.cxx:114 AliRsnMiniMonitor.cxx:115 AliRsnMiniMonitor.cxx:116 AliRsnMiniMonitor.cxx:117 AliRsnMiniMonitor.cxx:118 AliRsnMiniMonitor.cxx:119 AliRsnMiniMonitor.cxx:120 AliRsnMiniMonitor.cxx:121 AliRsnMiniMonitor.cxx:122 AliRsnMiniMonitor.cxx:123 AliRsnMiniMonitor.cxx:124 AliRsnMiniMonitor.cxx:125 AliRsnMiniMonitor.cxx:126 AliRsnMiniMonitor.cxx:127 AliRsnMiniMonitor.cxx:128 AliRsnMiniMonitor.cxx:129 AliRsnMiniMonitor.cxx:130 AliRsnMiniMonitor.cxx:131 AliRsnMiniMonitor.cxx:132 AliRsnMiniMonitor.cxx:133 AliRsnMiniMonitor.cxx:134 AliRsnMiniMonitor.cxx:135 AliRsnMiniMonitor.cxx:136 AliRsnMiniMonitor.cxx:137 AliRsnMiniMonitor.cxx:138 AliRsnMiniMonitor.cxx:139 AliRsnMiniMonitor.cxx:140 AliRsnMiniMonitor.cxx:141 AliRsnMiniMonitor.cxx:142 AliRsnMiniMonitor.cxx:143 AliRsnMiniMonitor.cxx:144 AliRsnMiniMonitor.cxx:145 AliRsnMiniMonitor.cxx:146 AliRsnMiniMonitor.cxx:147 AliRsnMiniMonitor.cxx:148 AliRsnMiniMonitor.cxx:149 AliRsnMiniMonitor.cxx:150 AliRsnMiniMonitor.cxx:151 AliRsnMiniMonitor.cxx:152 AliRsnMiniMonitor.cxx:153 AliRsnMiniMonitor.cxx:154 AliRsnMiniMonitor.cxx:155 AliRsnMiniMonitor.cxx:156 AliRsnMiniMonitor.cxx:157 AliRsnMiniMonitor.cxx:158 AliRsnMiniMonitor.cxx:159 AliRsnMiniMonitor.cxx:160 AliRsnMiniMonitor.cxx:161 AliRsnMiniMonitor.cxx:162 AliRsnMiniMonitor.cxx:163 AliRsnMiniMonitor.cxx:164 AliRsnMiniMonitor.cxx:165 AliRsnMiniMonitor.cxx:166 AliRsnMiniMonitor.cxx:167 AliRsnMiniMonitor.cxx:168 AliRsnMiniMonitor.cxx:169 AliRsnMiniMonitor.cxx:170 AliRsnMiniMonitor.cxx:171 AliRsnMiniMonitor.cxx:172 AliRsnMiniMonitor.cxx:173 AliRsnMiniMonitor.cxx:174 AliRsnMiniMonitor.cxx:175 AliRsnMiniMonitor.cxx:176 AliRsnMiniMonitor.cxx:177 AliRsnMiniMonitor.cxx:178 AliRsnMiniMonitor.cxx:179 AliRsnMiniMonitor.cxx:180 AliRsnMiniMonitor.cxx:181 AliRsnMiniMonitor.cxx:182 AliRsnMiniMonitor.cxx:183 AliRsnMiniMonitor.cxx:184 AliRsnMiniMonitor.cxx:185 AliRsnMiniMonitor.cxx:186 AliRsnMiniMonitor.cxx:187 AliRsnMiniMonitor.cxx:188 AliRsnMiniMonitor.cxx:189 AliRsnMiniMonitor.cxx:190 AliRsnMiniMonitor.cxx:191 AliRsnMiniMonitor.cxx:192 AliRsnMiniMonitor.cxx:193 AliRsnMiniMonitor.cxx:194 AliRsnMiniMonitor.cxx:195 AliRsnMiniMonitor.cxx:196 AliRsnMiniMonitor.cxx:197 AliRsnMiniMonitor.cxx:198 AliRsnMiniMonitor.cxx:199 AliRsnMiniMonitor.cxx:200 AliRsnMiniMonitor.cxx:201 AliRsnMiniMonitor.cxx:202 AliRsnMiniMonitor.cxx:203 AliRsnMiniMonitor.cxx:204 AliRsnMiniMonitor.cxx:205 AliRsnMiniMonitor.cxx:206 AliRsnMiniMonitor.cxx:207 AliRsnMiniMonitor.cxx:208 AliRsnMiniMonitor.cxx:209 AliRsnMiniMonitor.cxx:210 AliRsnMiniMonitor.cxx:211 AliRsnMiniMonitor.cxx:212 AliRsnMiniMonitor.cxx:213 AliRsnMiniMonitor.cxx:214 AliRsnMiniMonitor.cxx:215 AliRsnMiniMonitor.cxx:216 AliRsnMiniMonitor.cxx:217 AliRsnMiniMonitor.cxx:218 AliRsnMiniMonitor.cxx:219 AliRsnMiniMonitor.cxx:220 AliRsnMiniMonitor.cxx:221 AliRsnMiniMonitor.cxx:222 AliRsnMiniMonitor.cxx:223 AliRsnMiniMonitor.cxx:224 AliRsnMiniMonitor.cxx:225 AliRsnMiniMonitor.cxx:226 AliRsnMiniMonitor.cxx:227 AliRsnMiniMonitor.cxx:228 AliRsnMiniMonitor.cxx:229 AliRsnMiniMonitor.cxx:230 AliRsnMiniMonitor.cxx:231 AliRsnMiniMonitor.cxx:232 AliRsnMiniMonitor.cxx:233 AliRsnMiniMonitor.cxx:234 AliRsnMiniMonitor.cxx:235 AliRsnMiniMonitor.cxx:236 AliRsnMiniMonitor.cxx:237 AliRsnMiniMonitor.cxx:238 AliRsnMiniMonitor.cxx:239 AliRsnMiniMonitor.cxx:240 AliRsnMiniMonitor.cxx:241 AliRsnMiniMonitor.cxx:242 AliRsnMiniMonitor.cxx:243 AliRsnMiniMonitor.cxx:244 AliRsnMiniMonitor.cxx:245 AliRsnMiniMonitor.cxx:246 AliRsnMiniMonitor.cxx:247 AliRsnMiniMonitor.cxx:248 AliRsnMiniMonitor.cxx:249 AliRsnMiniMonitor.cxx:250 AliRsnMiniMonitor.cxx:251 AliRsnMiniMonitor.cxx:252 AliRsnMiniMonitor.cxx:253 AliRsnMiniMonitor.cxx:254 AliRsnMiniMonitor.cxx:255 AliRsnMiniMonitor.cxx:256 AliRsnMiniMonitor.cxx:257 AliRsnMiniMonitor.cxx:258 AliRsnMiniMonitor.cxx:259