20 #include <THashList.h> 25 #include "AliAnalysisUtils.h" 26 #include "AliInputEventHandler.h" 27 #include "AliESDEvent.h" 28 #include "AliESDtrackCuts.h" 41 AliAnalysisTaskTrackDCA::AliAnalysisTaskTrackDCA():
59 DefineOutput(1, TList::Class());
79 std::string triggerclasses[] = {
"MinBiasINT7",
"MinBiasINT8",
"EGAINT7",
"EGAINT8",
"EJEINT7",
"EJEINT8"};
80 TArrayD ptbinning, dcarbinning, dcazbinning;
85 for(std::string *trgiter = triggerclasses; trgiter < triggerclasses +
sizeof(triggerclasses)/
sizeof(std::string); trgiter++){
86 fHistos->
CreateTH1(Form(
"hEvents%s", trgiter->c_str()), Form(
"Event counter for trigger class %s", trgiter->c_str()), 1, 0.5, 1.5);
87 fHistos->
CreateTH2(Form(
"hDCAr%s", trgiter->c_str()), Form(
"DCA distribution vs. p_{t} for trigger class %s", trgiter->c_str()), ptbinning, dcarbinning);
88 fHistos->
CreateTH2(Form(
"hDCAz%s", trgiter->c_str()), Form(
"DCA distribution vs. p_{t} for trigger class %s", trgiter->c_str()), ptbinning, dcazbinning);
108 std::vector<std::string> triggers;
109 if(fInputHandler->IsEventSelected() & AliVEvent::kINT7) triggers.push_back(
"MinBiasINT7");
110 if(fInputHandler->IsEventSelected() & AliVEvent::kINT8) triggers.push_back(
"MinBiasINT8");
111 TString triggerstring = esdev->GetFiredTriggerClasses();
112 if(triggerstring.Contains(
"EGA")){
113 if(triggerstring.Contains(
"CEMC7")) triggers.push_back(
"EGAINT7");
114 else if(triggerstring.Contains(
"CEMC8")) triggers.push_back(
"EGAINT8");
115 }
else if(triggerstring.Contains(
"EJE")){
116 if(triggerstring.Contains(
"CEMC7")) triggers.push_back(
"EJEINT7");
117 else if(triggerstring.Contains(
"CEMC8")) triggers.push_back(
"EJEINT8");
119 if(!triggers.size())
return;
123 const AliESDVertex *primVertex = esdev->GetPrimaryVertex();
124 if(TMath::Abs(primVertex->GetZ()) > 10.)
return;
126 for(std::vector<std::string>::iterator trgiter = triggers.begin(); trgiter != triggers.end(); ++trgiter)
134 const AliESDtrack *track(NULL);
135 for(
Int_t ipart = 0; ipart < esdev->GetNumberOfTracks(); ipart++){
136 track = esdev->GetTrack(ipart);
137 AliESDtrack copytrack(*track);
140 Double_t pt = TMath::Abs(copytrack.Pt());
141 copytrack.GetImpactParameters(dcaR, dcaZ);
142 for(std::vector<std::string>::iterator trgit = triggers.begin(); trgit != triggers.end(); ++trgit){
176 std::vector<double> mybinning;
177 std::map<double,double> definitions;
178 definitions.insert(std::pair<double, double>(1, 0.05));
179 definitions.insert(std::pair<double, double>(2, 0.1));
180 definitions.insert(std::pair<double, double>(4, 0.2));
181 definitions.insert(std::pair<double, double>(7, 0.5));
182 definitions.insert(std::pair<double, double>(16, 1));
183 definitions.insert(std::pair<double, double>(36, 2));
184 definitions.insert(std::pair<double, double>(40, 4));
185 definitions.insert(std::pair<double, double>(50, 5));
186 definitions.insert(std::pair<double, double>(100, 10));
187 definitions.insert(std::pair<double, double>(200, 20));
188 double currentval = 0.;
189 mybinning.push_back(currentval);
190 for(std::map<double,double>::iterator
id = definitions.begin();
id != definitions.end(); ++id){
191 double limit =
id->first, binwidth =
id->second;
192 while(currentval < limit){
193 currentval += binwidth;
194 mybinning.push_back(currentval);
197 binning.Set(mybinning.size());
199 for(std::vector<double>::iterator it = mybinning.begin(); it != mybinning.end(); ++it)
212 double binwidth = (max-min)/static_cast<double>(nbins);
213 binning.Set(nbins+1);
215 double currentlimit = min + binwidth;
216 for(
int ibin = 0; ibin <
nbins; ibin++){
217 binning[ibin+1] = currentlimit;
218 currentlimit += binwidth;
Simple analysis task monitoring the track DCA distribution.
void CreateLinearBinning(TArrayD &binning, int nbins, double min, double max) const
virtual ~AliAnalysisTaskTrackDCA()
AliESDtrackCuts * fStandardCuts
Standard track cuts.
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
Create a new TH2 within the container.
AliAnalysisTaskTrackDCA()
THashList * GetListOfHistograms() const
Get the list of histograms.
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Create a new TH1 within the container.
void CreatePtBinning(TArrayD &binning) const
void UserExec(Option_t *opt)
THistManager * fHistos
Histogram container.
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
Analysis of high- tracks in triggered events.
Container class for histograms.
void UserCreateOutputObjects()
AliAnalysisUtils * fAnalysisUtils
Analysis utils (helper)