#include "TH1.h"
#include "TH2.h"
#include "TCanvas.h"
#include "THnSparse.h"
#include "AliHeader.h"
#include "AliInputEventHandler.h"
#include "AliAnalysisManager.h"
#include "AliGenEventHeader.h"
#include "AliStack.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliESDtrackCuts.h"
#include "AliLog.h"
#include "AliMultiplicity.h"
#include "AliTracker.h"
#include "AlidNdPtEventCuts.h"
#include "AlidNdPtAcceptanceCuts.h"
#include "AliPhysicsSelection.h"
#include "AliTriggerAnalysis.h"
#include "AliPWG0Helper.h"
#include "AlidNdPtHelper.h"
#include "AliPtResolAnalysis.h"
using namespace std;
ClassImp(AliPtResolAnalysis)
AliPtResolAnalysis::AliPtResolAnalysis(): AlidNdPt(),
fAnalysisFolder(0),
fTrackParamHist(0),
fTrackParamHist2(0)
{
Init();
}
AliPtResolAnalysis::AliPtResolAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,title),
fAnalysisFolder(0),
fTrackParamHist(0),
fTrackParamHist2(0)
{
Init();
}
AliPtResolAnalysis::~AliPtResolAnalysis() {
if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0;
if(fTrackParamHist) delete fTrackParamHist; fTrackParamHist=0;
if(fTrackParamHist2) delete fTrackParamHist2; fTrackParamHist2=0;
}
void AliPtResolAnalysis::Init(){
Int_t binsTrackParamHist[2]={400,300};
Double_t minTrackParamHist[2]={0,0};
Double_t maxTrackParamHist[2]={1,0.015};
fTrackParamHist = new THnSparseF("fTrackParamHist","1/pT:#sigma(1/pT)",2,binsTrackParamHist,minTrackParamHist,maxTrackParamHist);
fTrackParamHist->GetAxis(0)->SetTitle("1/pT (GeV/c)^{-1}");
fTrackParamHist->GetAxis(1)->SetTitle("#sigma(1/pT)");
fTrackParamHist->Sumw2();
const Int_t ptNbins = 73;
Double_t bins[74] = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0 };
Int_t binsTrackParamHist2[2]={ptNbins,200};
Double_t minTrackParamHist2[2]={0,0};
Double_t maxTrackParamHist2[2]={100,0.2};
fTrackParamHist2 = new THnSparseF("fTrackParamHist2","pT:#sigma(1/pT)*pT",2,binsTrackParamHist2,minTrackParamHist2,maxTrackParamHist2);
fTrackParamHist2->SetBinEdges(0,bins);
fTrackParamHist2->GetAxis(0)->SetTitle("pT (GeV/c)");
fTrackParamHist2->GetAxis(1)->SetTitle("#sigma(1/pT)*pT");
fTrackParamHist2->Sumw2();
fAnalysisFolder = CreateFolder("folderdNdPt","Analysis dNdPt Folder");
}
void AliPtResolAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent)
{
if(!esdEvent) {
AliDebug(AliLog::kError, "esdEvent not available");
return;
}
AlidNdPtEventCuts *evtCuts = GetEventCuts();
AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts();
AliESDtrackCuts *esdTrackCuts = GetTrackCuts();
if(!evtCuts || !accCuts || !esdTrackCuts) {
AliDebug(AliLog::kError, "cuts not available");
return;
}
Bool_t isEventTriggered = kTRUE;
AliPhysicsSelection *physicsSelection = NULL;
AliTriggerAnalysis* triggerAnalysis = NULL;
AliInputEventHandler* inputHandler = (AliInputEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
if (!inputHandler)
{
Printf("ERROR: Could not receive input handler");
return;
}
if(evtCuts->IsTriggerRequired())
{
isEventTriggered = inputHandler->IsEventSelected() & AliVEvent::kMB;
physicsSelection = static_cast<AliPhysicsSelection*> (inputHandler->GetEventSelection());
if(!physicsSelection) return;
if (isEventTriggered && (GetTrigger() == AliTriggerAnalysis::kV0AND)) {
triggerAnalysis = physicsSelection->GetTriggerAnalysis();
if(!triggerAnalysis) return;
isEventTriggered = triggerAnalysis->IsOfflineTriggerFired(esdEvent, GetTrigger());
}
const AliESDVertex* vtxESD = 0;
Bool_t isRecVertex = kFALSE;
if(evtCuts->IsRecVertexRequired())
{
Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();
Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();
vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints);
isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE);
}
Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex;
TObjArray *allChargedTracks=0;
if(isEventOK && isEventTriggered)
{
allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());
if(!allChargedTracks) return;
Int_t entries = allChargedTracks->GetEntries();
for(Int_t i=0; i<entries;++i)
{
AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);
if(!track) continue;
if(track->Charge()==0) continue;
if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0)
continue;
if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0)
continue;
if(esdTrackCuts->AcceptTrack(track))
{
if(accCuts->AcceptTrack(track))
{
Double_t v1[2] = {track->OneOverPt(),TMath::Sqrt(track->GetSigma1Pt2())};
fTrackParamHist->Fill(v1);
Double_t v2[2] = {track->Pt(),track->Pt()*TMath::Sqrt(track->GetSigma1Pt2())};
fTrackParamHist2->Fill(v2);
}
}
}
}
}
}
Long64_t AliPtResolAnalysis::Merge(TCollection* const list)
{
if (!list)
return 0;
if (list->IsEmpty())
return 1;
TIterator* iter = list->MakeIterator();
TObject* obj = 0;
Int_t count=0;
while((obj = iter->Next()) != 0) {
AliPtResolAnalysis* entry = dynamic_cast<AliPtResolAnalysis*>(obj);
if (entry == 0) continue;
fTrackParamHist->Add(entry->fTrackParamHist);
fTrackParamHist2->Add(entry->fTrackParamHist2);
}
return count;
}
void AliPtResolAnalysis::Analyse()
{
TH1::AddDirectory(kFALSE);
TObjArray *aFolderObj = new TObjArray;
if(!aFolderObj) return;
fAnalysisFolder = ExportToFolder(aFolderObj);
if(!fAnalysisFolder) {
if(aFolderObj) delete aFolderObj;
return;
}
if(aFolderObj) delete aFolderObj;
}
TFolder* AliPtResolAnalysis::ExportToFolder(TObjArray * const array)
{
if(!array) return NULL;
AliPtResolAnalysis * comp=this;
TFolder *folder = comp->GetAnalysisFolder();
TString name, title;
TFolder *newFolder = 0;
Int_t i = 0;
Int_t size = array->GetSize();
if(folder) {
name = folder->GetName();
title = folder->GetTitle();
delete folder;
newFolder = CreateFolder(name.Data(),title.Data());
newFolder->SetOwner();
while(i < size) {
newFolder->Add(array->At(i));
i++;
}
}
return newFolder;
}
TFolder* AliPtResolAnalysis::CreateFolder(TString name,TString title) {
TFolder *folder = 0;
folder = new TFolder(name.Data(),title.Data());
return folder;
}
AliPtResolAnalysis.cxx:10 AliPtResolAnalysis.cxx:11 AliPtResolAnalysis.cxx:12 AliPtResolAnalysis.cxx:13 AliPtResolAnalysis.cxx:14 AliPtResolAnalysis.cxx:15 AliPtResolAnalysis.cxx:16 AliPtResolAnalysis.cxx:17 AliPtResolAnalysis.cxx:18 AliPtResolAnalysis.cxx:19 AliPtResolAnalysis.cxx:20 AliPtResolAnalysis.cxx:21 AliPtResolAnalysis.cxx:22 AliPtResolAnalysis.cxx:23 AliPtResolAnalysis.cxx:24 AliPtResolAnalysis.cxx:25 AliPtResolAnalysis.cxx:26 AliPtResolAnalysis.cxx:27 AliPtResolAnalysis.cxx:28 AliPtResolAnalysis.cxx:29 AliPtResolAnalysis.cxx:30 AliPtResolAnalysis.cxx:31 AliPtResolAnalysis.cxx:32 AliPtResolAnalysis.cxx:33 AliPtResolAnalysis.cxx:34 AliPtResolAnalysis.cxx:35 AliPtResolAnalysis.cxx:36 AliPtResolAnalysis.cxx:37 AliPtResolAnalysis.cxx:38 AliPtResolAnalysis.cxx:39 AliPtResolAnalysis.cxx:40 AliPtResolAnalysis.cxx:41 AliPtResolAnalysis.cxx:42 AliPtResolAnalysis.cxx:43 AliPtResolAnalysis.cxx:44 AliPtResolAnalysis.cxx:45 AliPtResolAnalysis.cxx:46 AliPtResolAnalysis.cxx:47 AliPtResolAnalysis.cxx:48 AliPtResolAnalysis.cxx:49 AliPtResolAnalysis.cxx:50 AliPtResolAnalysis.cxx:51 AliPtResolAnalysis.cxx:52 AliPtResolAnalysis.cxx:53 AliPtResolAnalysis.cxx:54 AliPtResolAnalysis.cxx:55 AliPtResolAnalysis.cxx:56 AliPtResolAnalysis.cxx:57 AliPtResolAnalysis.cxx:58 AliPtResolAnalysis.cxx:59 AliPtResolAnalysis.cxx:60 AliPtResolAnalysis.cxx:61 AliPtResolAnalysis.cxx:62 AliPtResolAnalysis.cxx:63 AliPtResolAnalysis.cxx:64 AliPtResolAnalysis.cxx:65 AliPtResolAnalysis.cxx:66 AliPtResolAnalysis.cxx:67 AliPtResolAnalysis.cxx:68 AliPtResolAnalysis.cxx:69 AliPtResolAnalysis.cxx:70 AliPtResolAnalysis.cxx:71 AliPtResolAnalysis.cxx:72 AliPtResolAnalysis.cxx:73 AliPtResolAnalysis.cxx:74 AliPtResolAnalysis.cxx:75 AliPtResolAnalysis.cxx:76 AliPtResolAnalysis.cxx:77 AliPtResolAnalysis.cxx:78 AliPtResolAnalysis.cxx:79 AliPtResolAnalysis.cxx:80 AliPtResolAnalysis.cxx:81 AliPtResolAnalysis.cxx:82 AliPtResolAnalysis.cxx:83 AliPtResolAnalysis.cxx:84 AliPtResolAnalysis.cxx:85 AliPtResolAnalysis.cxx:86 AliPtResolAnalysis.cxx:87 AliPtResolAnalysis.cxx:88 AliPtResolAnalysis.cxx:89 AliPtResolAnalysis.cxx:90 AliPtResolAnalysis.cxx:91 AliPtResolAnalysis.cxx:92 AliPtResolAnalysis.cxx:93 AliPtResolAnalysis.cxx:94 AliPtResolAnalysis.cxx:95 AliPtResolAnalysis.cxx:96 AliPtResolAnalysis.cxx:97 AliPtResolAnalysis.cxx:98 AliPtResolAnalysis.cxx:99 AliPtResolAnalysis.cxx:100 AliPtResolAnalysis.cxx:101 AliPtResolAnalysis.cxx:102 AliPtResolAnalysis.cxx:103 AliPtResolAnalysis.cxx:104 AliPtResolAnalysis.cxx:105 AliPtResolAnalysis.cxx:106 AliPtResolAnalysis.cxx:107 AliPtResolAnalysis.cxx:108 AliPtResolAnalysis.cxx:109 AliPtResolAnalysis.cxx:110 AliPtResolAnalysis.cxx:111 AliPtResolAnalysis.cxx:112 AliPtResolAnalysis.cxx:113 AliPtResolAnalysis.cxx:114 AliPtResolAnalysis.cxx:115 AliPtResolAnalysis.cxx:116 AliPtResolAnalysis.cxx:117 AliPtResolAnalysis.cxx:118 AliPtResolAnalysis.cxx:119 AliPtResolAnalysis.cxx:120 AliPtResolAnalysis.cxx:121 AliPtResolAnalysis.cxx:122 AliPtResolAnalysis.cxx:123 AliPtResolAnalysis.cxx:124 AliPtResolAnalysis.cxx:125 AliPtResolAnalysis.cxx:126 AliPtResolAnalysis.cxx:127 AliPtResolAnalysis.cxx:128 AliPtResolAnalysis.cxx:129 AliPtResolAnalysis.cxx:130 AliPtResolAnalysis.cxx:131 AliPtResolAnalysis.cxx:132 AliPtResolAnalysis.cxx:133 AliPtResolAnalysis.cxx:134 AliPtResolAnalysis.cxx:135 AliPtResolAnalysis.cxx:136 AliPtResolAnalysis.cxx:137 AliPtResolAnalysis.cxx:138 AliPtResolAnalysis.cxx:139 AliPtResolAnalysis.cxx:140 AliPtResolAnalysis.cxx:141 AliPtResolAnalysis.cxx:142 AliPtResolAnalysis.cxx:143 AliPtResolAnalysis.cxx:144 AliPtResolAnalysis.cxx:145 AliPtResolAnalysis.cxx:146 AliPtResolAnalysis.cxx:147 AliPtResolAnalysis.cxx:148 AliPtResolAnalysis.cxx:149 AliPtResolAnalysis.cxx:150 AliPtResolAnalysis.cxx:151 AliPtResolAnalysis.cxx:152 AliPtResolAnalysis.cxx:153 AliPtResolAnalysis.cxx:154 AliPtResolAnalysis.cxx:155 AliPtResolAnalysis.cxx:156 AliPtResolAnalysis.cxx:157 AliPtResolAnalysis.cxx:158 AliPtResolAnalysis.cxx:159 AliPtResolAnalysis.cxx:160 AliPtResolAnalysis.cxx:161 AliPtResolAnalysis.cxx:162 AliPtResolAnalysis.cxx:163 AliPtResolAnalysis.cxx:164 AliPtResolAnalysis.cxx:165 AliPtResolAnalysis.cxx:166 AliPtResolAnalysis.cxx:167 AliPtResolAnalysis.cxx:168 AliPtResolAnalysis.cxx:169 AliPtResolAnalysis.cxx:170 AliPtResolAnalysis.cxx:171 AliPtResolAnalysis.cxx:172 AliPtResolAnalysis.cxx:173 AliPtResolAnalysis.cxx:174 AliPtResolAnalysis.cxx:175 AliPtResolAnalysis.cxx:176 AliPtResolAnalysis.cxx:177 AliPtResolAnalysis.cxx:178 AliPtResolAnalysis.cxx:179 AliPtResolAnalysis.cxx:180 AliPtResolAnalysis.cxx:181 AliPtResolAnalysis.cxx:182 AliPtResolAnalysis.cxx:183 AliPtResolAnalysis.cxx:184 AliPtResolAnalysis.cxx:185 AliPtResolAnalysis.cxx:186 AliPtResolAnalysis.cxx:187 AliPtResolAnalysis.cxx:188 AliPtResolAnalysis.cxx:189 AliPtResolAnalysis.cxx:190 AliPtResolAnalysis.cxx:191 AliPtResolAnalysis.cxx:192 AliPtResolAnalysis.cxx:193 AliPtResolAnalysis.cxx:194 AliPtResolAnalysis.cxx:195 AliPtResolAnalysis.cxx:196 AliPtResolAnalysis.cxx:197 AliPtResolAnalysis.cxx:198 AliPtResolAnalysis.cxx:199 AliPtResolAnalysis.cxx:200 AliPtResolAnalysis.cxx:201 AliPtResolAnalysis.cxx:202 AliPtResolAnalysis.cxx:203 AliPtResolAnalysis.cxx:204 AliPtResolAnalysis.cxx:205 AliPtResolAnalysis.cxx:206 AliPtResolAnalysis.cxx:207 AliPtResolAnalysis.cxx:208 AliPtResolAnalysis.cxx:209 AliPtResolAnalysis.cxx:210 AliPtResolAnalysis.cxx:211 AliPtResolAnalysis.cxx:212 AliPtResolAnalysis.cxx:213 AliPtResolAnalysis.cxx:214 AliPtResolAnalysis.cxx:215 AliPtResolAnalysis.cxx:216 AliPtResolAnalysis.cxx:217 AliPtResolAnalysis.cxx:218 AliPtResolAnalysis.cxx:219 AliPtResolAnalysis.cxx:220 AliPtResolAnalysis.cxx:221 AliPtResolAnalysis.cxx:222 AliPtResolAnalysis.cxx:223 AliPtResolAnalysis.cxx:224 AliPtResolAnalysis.cxx:225 AliPtResolAnalysis.cxx:226 AliPtResolAnalysis.cxx:227 AliPtResolAnalysis.cxx:228 AliPtResolAnalysis.cxx:229 AliPtResolAnalysis.cxx:230 AliPtResolAnalysis.cxx:231 AliPtResolAnalysis.cxx:232 AliPtResolAnalysis.cxx:233 AliPtResolAnalysis.cxx:234 AliPtResolAnalysis.cxx:235 AliPtResolAnalysis.cxx:236 AliPtResolAnalysis.cxx:237 AliPtResolAnalysis.cxx:238 AliPtResolAnalysis.cxx:239 AliPtResolAnalysis.cxx:240 AliPtResolAnalysis.cxx:241 AliPtResolAnalysis.cxx:242 AliPtResolAnalysis.cxx:243 AliPtResolAnalysis.cxx:244 AliPtResolAnalysis.cxx:245 AliPtResolAnalysis.cxx:246 AliPtResolAnalysis.cxx:247 AliPtResolAnalysis.cxx:248 AliPtResolAnalysis.cxx:249 AliPtResolAnalysis.cxx:250 AliPtResolAnalysis.cxx:251 AliPtResolAnalysis.cxx:252 AliPtResolAnalysis.cxx:253 AliPtResolAnalysis.cxx:254 AliPtResolAnalysis.cxx:255 AliPtResolAnalysis.cxx:256 AliPtResolAnalysis.cxx:257 AliPtResolAnalysis.cxx:258 AliPtResolAnalysis.cxx:259 AliPtResolAnalysis.cxx:260 AliPtResolAnalysis.cxx:261 AliPtResolAnalysis.cxx:262 AliPtResolAnalysis.cxx:263 AliPtResolAnalysis.cxx:264 AliPtResolAnalysis.cxx:265 AliPtResolAnalysis.cxx:266 AliPtResolAnalysis.cxx:267 AliPtResolAnalysis.cxx:268 AliPtResolAnalysis.cxx:269 AliPtResolAnalysis.cxx:270 AliPtResolAnalysis.cxx:271 AliPtResolAnalysis.cxx:272 AliPtResolAnalysis.cxx:273 AliPtResolAnalysis.cxx:274 AliPtResolAnalysis.cxx:275 AliPtResolAnalysis.cxx:276 AliPtResolAnalysis.cxx:277 AliPtResolAnalysis.cxx:278 AliPtResolAnalysis.cxx:279 AliPtResolAnalysis.cxx:280 AliPtResolAnalysis.cxx:281 AliPtResolAnalysis.cxx:282 AliPtResolAnalysis.cxx:283 AliPtResolAnalysis.cxx:284 AliPtResolAnalysis.cxx:285 AliPtResolAnalysis.cxx:286 AliPtResolAnalysis.cxx:287 AliPtResolAnalysis.cxx:288 AliPtResolAnalysis.cxx:289 AliPtResolAnalysis.cxx:290 AliPtResolAnalysis.cxx:291 AliPtResolAnalysis.cxx:292 AliPtResolAnalysis.cxx:293 AliPtResolAnalysis.cxx:294 AliPtResolAnalysis.cxx:295 AliPtResolAnalysis.cxx:296 AliPtResolAnalysis.cxx:297 AliPtResolAnalysis.cxx:298 AliPtResolAnalysis.cxx:299 AliPtResolAnalysis.cxx:300 AliPtResolAnalysis.cxx:301 AliPtResolAnalysis.cxx:302 AliPtResolAnalysis.cxx:303 AliPtResolAnalysis.cxx:304 AliPtResolAnalysis.cxx:305 AliPtResolAnalysis.cxx:306 AliPtResolAnalysis.cxx:307 AliPtResolAnalysis.cxx:308 AliPtResolAnalysis.cxx:309 AliPtResolAnalysis.cxx:310 AliPtResolAnalysis.cxx:311 AliPtResolAnalysis.cxx:312 AliPtResolAnalysis.cxx:313 AliPtResolAnalysis.cxx:314 AliPtResolAnalysis.cxx:315 AliPtResolAnalysis.cxx:316 AliPtResolAnalysis.cxx:317 AliPtResolAnalysis.cxx:318 AliPtResolAnalysis.cxx:319 AliPtResolAnalysis.cxx:320 AliPtResolAnalysis.cxx:321 AliPtResolAnalysis.cxx:322 AliPtResolAnalysis.cxx:323 AliPtResolAnalysis.cxx:324 AliPtResolAnalysis.cxx:325 AliPtResolAnalysis.cxx:326 AliPtResolAnalysis.cxx:327 AliPtResolAnalysis.cxx:328 AliPtResolAnalysis.cxx:329 AliPtResolAnalysis.cxx:330 AliPtResolAnalysis.cxx:331 AliPtResolAnalysis.cxx:332