#include <TChain.h>
#include <TMath.h>
#include <TVectorD.h>
#include <TSystem.h>
#include <TFile.h>
#include <TParticle.h>
#include <TTreeStream.h>
#include <AliAnalysisManager.h>
#include <AliESDInputHandler.h>
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliMCEventHandler.h"
#include "AliMathBase.h"
#include <AliESD.h>
#include "AliExternalTrackParam.h"
#include "AliTracker.h"
#include "AliTPCseed.h"
#include "AliTPCComparisonPID.h"
#include <THnSparse.h>
#include <iostream>
using namespace std;
ClassImp(AliTPCComparisonPID)
AliTPCComparisonPID::AliTPCComparisonPID() :
AliAnalysisTask(),
fMCinfo(0),
fESD(0),
fTPCsignal(0),
fTPCsignalNorm(0),
fDebugStreamer(0),
fStreamLevel(0),
fDebugLevel(0),
fDebugOutputPath()
{
}
AliTPCComparisonPID::AliTPCComparisonPID(const AliTPCComparisonPID& info) :
AliAnalysisTask(info),
fMCinfo(info.fMCinfo),
fESD(info.fESD),
fTPCsignal(0),
fTPCsignalNorm(0),
fDebugStreamer(0),
fStreamLevel(0),
fDebugLevel(),
fDebugOutputPath()
{
}
AliTPCComparisonPID::AliTPCComparisonPID(const char *name) :
AliAnalysisTask(name, "AliTPCComparisonPID"),
fMCinfo(0),
fESD(0),
fTPCsignal(0),
fTPCsignalNorm(0),
fDebugStreamer(0),
fStreamLevel(0),
fDebugLevel(0),
fDebugOutputPath()
{
DefineInput(0, TChain::Class());
DefineOutput(0, AliTPCComparisonPID::Class());
Init();
}
void AliTPCComparisonPID::Init(){
Double_t xmin[5], xmax[5];
Int_t nbins[5];
nbins[0]=10;
xmin[0]=0; xmax[0]=10;
nbins[1]=30;
xmin[1]=0.1; xmax[1]=3;
nbins[2]=20;
xmin[2]=-1.5; xmax[2]=1.5;
nbins[3]=50;
xmin[3]=0.1; xmax[3]=100;
nbins[4]=400;
xmin[4]=20; xmax[4]=400;
fTPCsignal = new THnSparseF("TPC signal","TPC signal",5,nbins,xmin,xmax);
nbins[4]=100;
xmin[4]=25; xmax[4]=75;
fTPCsignal = new THnSparseF("TPC signal Norm","TPC signal Norm",5,nbins,xmin,xmax);
}
AliTPCComparisonPID::~AliTPCComparisonPID(){
if (fDebugLevel>0) printf("AliTPCComparisonPID::~AliTPCComparisonPID\n");
if (fDebugStreamer) delete fDebugStreamer;
fDebugStreamer=0;
delete fTPCsignal;
delete fTPCsignalNorm;
}
void AliTPCComparisonPID::ConnectInputData(Option_t *)
{
if(fDebugLevel>3)
cout << "AnalysisTaskTPCCluster::ConnectInputData()" << endl;
TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
if (!tree) {
}
else {
AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
if (!esdH) {
}
else {
fESD = esdH->GetEvent();
}
}
AliMCEventHandler* mcinfo = (AliMCEventHandler*) (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
mcinfo->SetReadTR(kTRUE);
fMCinfo = mcinfo->MCEvent();
}
void AliTPCComparisonPID::CreateOutputObjects()
{
if(fDebugLevel>3)
cout << "AnalysisTaskTPCCluster::CreateOutputObjects()" << endl;
}
void AliTPCComparisonPID::Exec(Option_t *) {
if(fDebugLevel>3)
cout << "AliTPCComparisonPID::Exec()" << endl;
if (!fMCinfo){
cout << "Not MC info\n" << endl;
}else{
ProcessMCInfo();
}
PostData(0, this);
}
void AliTPCComparisonPID::Terminate(Option_t *) {
if(fDebugLevel>3)
printf("AliTPCComparisonPID: Terminate() \n");
if (fDebugLevel>0) printf("AliMCtrackingTestTask::Terminate\n");
if (fDebugStreamer) delete fDebugStreamer;
fDebugStreamer = 0;
return;
}
TTreeSRedirector *AliTPCComparisonPID::GetDebugStreamer(){
if (fStreamLevel==0) return 0;
if (fDebugStreamer) return fDebugStreamer;
TString dsName;
dsName=GetName();
dsName+="Debug.root";
dsName.ReplaceAll(" ","");
fDebugStreamer = new TTreeSRedirector(dsName.Data());
return fDebugStreamer;
}
void AliTPCComparisonPID::ProcessMCInfo(){
Int_t npart = fMCinfo->GetNumberOfTracks();
Int_t ntracks = fESD->GetNumberOfTracks();
if (npart<=0) return;
if (ntracks<=0) return;
TParticle * particle= new TParticle;
TClonesArray * trefs = new TClonesArray("AliTrackReference");
for (Int_t itrack=0;itrack<ntracks;itrack++){
AliESDtrack *track = fESD->GetTrack(itrack);
const AliExternalTrackParam *in=track->GetInnerParam();
if (!in) continue;
Int_t ipart = TMath::Abs(track->GetLabel());
Int_t status = fMCinfo->GetParticleAndTR(ipart, particle, trefs);
if (status<0) continue;
if (!particle) continue;
if (!trefs) continue;
Double_t mom = in->GetP();
Double_t dedx=track->GetTPCsignal();
Double_t mass = particle->GetMass();
Double_t bg =mom/mass;
Double_t betheBloch = AliMathBase::BetheBlochAleph(bg);
Double_t x[5];
Int_t pdg = particle->GetPdgCode();
for (Int_t iType=0;iType<5;iType++) {
if (AliPID::ParticleCode(iType)==TMath::Abs(pdg)){
x[0]=iType;
if (pdg<0) x[0]+=5;
}
}
x[1]= mom;
x[2]= track->GetTgl();
x[3]= TMath::Log(bg);
x[4]= dedx;
fTPCsignal->Fill(x);
x[4]=dedx/betheBloch;
fTPCsignalNorm->Fill(x);
}
}
void AliTPCComparisonPID::FinishTaskOutput()
{
Terminate("slave");
gSystem->Exec("pwd");
RegisterDebugOutput();
}
void AliTPCComparisonPID::RegisterDebugOutput(){
TString dsName;
dsName=GetName();
dsName+="Debug.root";
dsName.ReplaceAll(" ","");
TString dsName2=fDebugOutputPath.Data();
gSystem->MakeDirectory(dsName2.Data());
dsName2+=gSystem->HostName();
gSystem->MakeDirectory(dsName2.Data());
dsName2+="/";
dsName2+=gSystem->BaseName(gSystem->pwd());
dsName2+="/";
gSystem->MakeDirectory(dsName2.Data());
dsName2+=dsName;
AliInfo(Form("copy %s\t%s\n",dsName.Data(),dsName2.Data()));
printf("copy %s\t%s\n",dsName.Data(),dsName2.Data());
TFile::Cp(dsName.Data(),dsName2.Data());
}
AliTPCComparisonPID.cxx:1 AliTPCComparisonPID.cxx:2 AliTPCComparisonPID.cxx:3 AliTPCComparisonPID.cxx:4 AliTPCComparisonPID.cxx:5 AliTPCComparisonPID.cxx:6 AliTPCComparisonPID.cxx:7 AliTPCComparisonPID.cxx:8 AliTPCComparisonPID.cxx:9 AliTPCComparisonPID.cxx:10 AliTPCComparisonPID.cxx:11 AliTPCComparisonPID.cxx:12 AliTPCComparisonPID.cxx:13 AliTPCComparisonPID.cxx:14 AliTPCComparisonPID.cxx:15 AliTPCComparisonPID.cxx:16 AliTPCComparisonPID.cxx:17 AliTPCComparisonPID.cxx:18 AliTPCComparisonPID.cxx:19 AliTPCComparisonPID.cxx:20 AliTPCComparisonPID.cxx:21 AliTPCComparisonPID.cxx:22 AliTPCComparisonPID.cxx:23 AliTPCComparisonPID.cxx:24 AliTPCComparisonPID.cxx:25 AliTPCComparisonPID.cxx:26 AliTPCComparisonPID.cxx:27 AliTPCComparisonPID.cxx:28 AliTPCComparisonPID.cxx:29 AliTPCComparisonPID.cxx:30 AliTPCComparisonPID.cxx:31 AliTPCComparisonPID.cxx:32 AliTPCComparisonPID.cxx:33 AliTPCComparisonPID.cxx:34 AliTPCComparisonPID.cxx:35 AliTPCComparisonPID.cxx:36 AliTPCComparisonPID.cxx:37 AliTPCComparisonPID.cxx:38 AliTPCComparisonPID.cxx:39 AliTPCComparisonPID.cxx:40 AliTPCComparisonPID.cxx:41 AliTPCComparisonPID.cxx:42 AliTPCComparisonPID.cxx:43 AliTPCComparisonPID.cxx:44 AliTPCComparisonPID.cxx:45 AliTPCComparisonPID.cxx:46 AliTPCComparisonPID.cxx:47 AliTPCComparisonPID.cxx:48 AliTPCComparisonPID.cxx:49 AliTPCComparisonPID.cxx:50 AliTPCComparisonPID.cxx:51 AliTPCComparisonPID.cxx:52 AliTPCComparisonPID.cxx:53 AliTPCComparisonPID.cxx:54 AliTPCComparisonPID.cxx:55 AliTPCComparisonPID.cxx:56 AliTPCComparisonPID.cxx:57 AliTPCComparisonPID.cxx:58 AliTPCComparisonPID.cxx:59 AliTPCComparisonPID.cxx:60 AliTPCComparisonPID.cxx:61 AliTPCComparisonPID.cxx:62 AliTPCComparisonPID.cxx:63 AliTPCComparisonPID.cxx:64 AliTPCComparisonPID.cxx:65 AliTPCComparisonPID.cxx:66 AliTPCComparisonPID.cxx:67 AliTPCComparisonPID.cxx:68 AliTPCComparisonPID.cxx:69 AliTPCComparisonPID.cxx:70 AliTPCComparisonPID.cxx:71 AliTPCComparisonPID.cxx:72 AliTPCComparisonPID.cxx:73 AliTPCComparisonPID.cxx:74 AliTPCComparisonPID.cxx:75 AliTPCComparisonPID.cxx:76 AliTPCComparisonPID.cxx:77 AliTPCComparisonPID.cxx:78 AliTPCComparisonPID.cxx:79 AliTPCComparisonPID.cxx:80 AliTPCComparisonPID.cxx:81 AliTPCComparisonPID.cxx:82 AliTPCComparisonPID.cxx:83 AliTPCComparisonPID.cxx:84 AliTPCComparisonPID.cxx:85 AliTPCComparisonPID.cxx:86 AliTPCComparisonPID.cxx:87 AliTPCComparisonPID.cxx:88 AliTPCComparisonPID.cxx:89 AliTPCComparisonPID.cxx:90 AliTPCComparisonPID.cxx:91 AliTPCComparisonPID.cxx:92 AliTPCComparisonPID.cxx:93 AliTPCComparisonPID.cxx:94 AliTPCComparisonPID.cxx:95 AliTPCComparisonPID.cxx:96 AliTPCComparisonPID.cxx:97 AliTPCComparisonPID.cxx:98 AliTPCComparisonPID.cxx:99 AliTPCComparisonPID.cxx:100 AliTPCComparisonPID.cxx:101 AliTPCComparisonPID.cxx:102 AliTPCComparisonPID.cxx:103 AliTPCComparisonPID.cxx:104 AliTPCComparisonPID.cxx:105 AliTPCComparisonPID.cxx:106 AliTPCComparisonPID.cxx:107 AliTPCComparisonPID.cxx:108 AliTPCComparisonPID.cxx:109 AliTPCComparisonPID.cxx:110 AliTPCComparisonPID.cxx:111 AliTPCComparisonPID.cxx:112 AliTPCComparisonPID.cxx:113 AliTPCComparisonPID.cxx:114 AliTPCComparisonPID.cxx:115 AliTPCComparisonPID.cxx:116 AliTPCComparisonPID.cxx:117 AliTPCComparisonPID.cxx:118 AliTPCComparisonPID.cxx:119 AliTPCComparisonPID.cxx:120 AliTPCComparisonPID.cxx:121 AliTPCComparisonPID.cxx:122 AliTPCComparisonPID.cxx:123 AliTPCComparisonPID.cxx:124 AliTPCComparisonPID.cxx:125 AliTPCComparisonPID.cxx:126 AliTPCComparisonPID.cxx:127 AliTPCComparisonPID.cxx:128 AliTPCComparisonPID.cxx:129 AliTPCComparisonPID.cxx:130 AliTPCComparisonPID.cxx:131 AliTPCComparisonPID.cxx:132 AliTPCComparisonPID.cxx:133 AliTPCComparisonPID.cxx:134 AliTPCComparisonPID.cxx:135 AliTPCComparisonPID.cxx:136 AliTPCComparisonPID.cxx:137 AliTPCComparisonPID.cxx:138 AliTPCComparisonPID.cxx:139 AliTPCComparisonPID.cxx:140 AliTPCComparisonPID.cxx:141 AliTPCComparisonPID.cxx:142 AliTPCComparisonPID.cxx:143 AliTPCComparisonPID.cxx:144 AliTPCComparisonPID.cxx:145 AliTPCComparisonPID.cxx:146 AliTPCComparisonPID.cxx:147 AliTPCComparisonPID.cxx:148 AliTPCComparisonPID.cxx:149 AliTPCComparisonPID.cxx:150 AliTPCComparisonPID.cxx:151 AliTPCComparisonPID.cxx:152 AliTPCComparisonPID.cxx:153 AliTPCComparisonPID.cxx:154 AliTPCComparisonPID.cxx:155 AliTPCComparisonPID.cxx:156 AliTPCComparisonPID.cxx:157 AliTPCComparisonPID.cxx:158 AliTPCComparisonPID.cxx:159 AliTPCComparisonPID.cxx:160 AliTPCComparisonPID.cxx:161 AliTPCComparisonPID.cxx:162 AliTPCComparisonPID.cxx:163 AliTPCComparisonPID.cxx:164 AliTPCComparisonPID.cxx:165 AliTPCComparisonPID.cxx:166 AliTPCComparisonPID.cxx:167 AliTPCComparisonPID.cxx:168 AliTPCComparisonPID.cxx:169 AliTPCComparisonPID.cxx:170 AliTPCComparisonPID.cxx:171 AliTPCComparisonPID.cxx:172 AliTPCComparisonPID.cxx:173 AliTPCComparisonPID.cxx:174 AliTPCComparisonPID.cxx:175 AliTPCComparisonPID.cxx:176 AliTPCComparisonPID.cxx:177 AliTPCComparisonPID.cxx:178 AliTPCComparisonPID.cxx:179 AliTPCComparisonPID.cxx:180 AliTPCComparisonPID.cxx:181 AliTPCComparisonPID.cxx:182 AliTPCComparisonPID.cxx:183 AliTPCComparisonPID.cxx:184 AliTPCComparisonPID.cxx:185 AliTPCComparisonPID.cxx:186 AliTPCComparisonPID.cxx:187 AliTPCComparisonPID.cxx:188 AliTPCComparisonPID.cxx:189 AliTPCComparisonPID.cxx:190 AliTPCComparisonPID.cxx:191 AliTPCComparisonPID.cxx:192 AliTPCComparisonPID.cxx:193 AliTPCComparisonPID.cxx:194 AliTPCComparisonPID.cxx:195 AliTPCComparisonPID.cxx:196 AliTPCComparisonPID.cxx:197 AliTPCComparisonPID.cxx:198 AliTPCComparisonPID.cxx:199 AliTPCComparisonPID.cxx:200 AliTPCComparisonPID.cxx:201 AliTPCComparisonPID.cxx:202 AliTPCComparisonPID.cxx:203 AliTPCComparisonPID.cxx:204 AliTPCComparisonPID.cxx:205 AliTPCComparisonPID.cxx:206 AliTPCComparisonPID.cxx:207 AliTPCComparisonPID.cxx:208 AliTPCComparisonPID.cxx:209 AliTPCComparisonPID.cxx:210 AliTPCComparisonPID.cxx:211 AliTPCComparisonPID.cxx:212 AliTPCComparisonPID.cxx:213 AliTPCComparisonPID.cxx:214 AliTPCComparisonPID.cxx:215 AliTPCComparisonPID.cxx:216 AliTPCComparisonPID.cxx:217 AliTPCComparisonPID.cxx:218 AliTPCComparisonPID.cxx:219 AliTPCComparisonPID.cxx:220 AliTPCComparisonPID.cxx:221 AliTPCComparisonPID.cxx:222 AliTPCComparisonPID.cxx:223 AliTPCComparisonPID.cxx:224 AliTPCComparisonPID.cxx:225 AliTPCComparisonPID.cxx:226 AliTPCComparisonPID.cxx:227 AliTPCComparisonPID.cxx:228 AliTPCComparisonPID.cxx:229 AliTPCComparisonPID.cxx:230 AliTPCComparisonPID.cxx:231 AliTPCComparisonPID.cxx:232 AliTPCComparisonPID.cxx:233 AliTPCComparisonPID.cxx:234 AliTPCComparisonPID.cxx:235 AliTPCComparisonPID.cxx:236 AliTPCComparisonPID.cxx:237 AliTPCComparisonPID.cxx:238 AliTPCComparisonPID.cxx:239 AliTPCComparisonPID.cxx:240 AliTPCComparisonPID.cxx:241 AliTPCComparisonPID.cxx:242 AliTPCComparisonPID.cxx:243 AliTPCComparisonPID.cxx:244 AliTPCComparisonPID.cxx:245 AliTPCComparisonPID.cxx:246 AliTPCComparisonPID.cxx:247 AliTPCComparisonPID.cxx:248 AliTPCComparisonPID.cxx:249 AliTPCComparisonPID.cxx:250 AliTPCComparisonPID.cxx:251 AliTPCComparisonPID.cxx:252 AliTPCComparisonPID.cxx:253 AliTPCComparisonPID.cxx:254 AliTPCComparisonPID.cxx:255 AliTPCComparisonPID.cxx:256 AliTPCComparisonPID.cxx:257 AliTPCComparisonPID.cxx:258 AliTPCComparisonPID.cxx:259 AliTPCComparisonPID.cxx:260 AliTPCComparisonPID.cxx:261 AliTPCComparisonPID.cxx:262 AliTPCComparisonPID.cxx:263 AliTPCComparisonPID.cxx:264 AliTPCComparisonPID.cxx:265 AliTPCComparisonPID.cxx:266 AliTPCComparisonPID.cxx:267 AliTPCComparisonPID.cxx:268 AliTPCComparisonPID.cxx:269 AliTPCComparisonPID.cxx:270 AliTPCComparisonPID.cxx:271 AliTPCComparisonPID.cxx:272 AliTPCComparisonPID.cxx:273 AliTPCComparisonPID.cxx:274 AliTPCComparisonPID.cxx:275 AliTPCComparisonPID.cxx:276 AliTPCComparisonPID.cxx:277 AliTPCComparisonPID.cxx:278 AliTPCComparisonPID.cxx:279 AliTPCComparisonPID.cxx:280 AliTPCComparisonPID.cxx:281 AliTPCComparisonPID.cxx:282 AliTPCComparisonPID.cxx:283 AliTPCComparisonPID.cxx:284 AliTPCComparisonPID.cxx:285 AliTPCComparisonPID.cxx:286 AliTPCComparisonPID.cxx:287 AliTPCComparisonPID.cxx:288 AliTPCComparisonPID.cxx:289 AliTPCComparisonPID.cxx:290 AliTPCComparisonPID.cxx:291 AliTPCComparisonPID.cxx:292 AliTPCComparisonPID.cxx:293 AliTPCComparisonPID.cxx:294 AliTPCComparisonPID.cxx:295 AliTPCComparisonPID.cxx:296 AliTPCComparisonPID.cxx:297 AliTPCComparisonPID.cxx:298 AliTPCComparisonPID.cxx:299 AliTPCComparisonPID.cxx:300 AliTPCComparisonPID.cxx:301 AliTPCComparisonPID.cxx:302 AliTPCComparisonPID.cxx:303 AliTPCComparisonPID.cxx:304 AliTPCComparisonPID.cxx:305 AliTPCComparisonPID.cxx:306 AliTPCComparisonPID.cxx:307 AliTPCComparisonPID.cxx:308 AliTPCComparisonPID.cxx:309 AliTPCComparisonPID.cxx:310 AliTPCComparisonPID.cxx:311 AliTPCComparisonPID.cxx:312 AliTPCComparisonPID.cxx:313 AliTPCComparisonPID.cxx:314 AliTPCComparisonPID.cxx:315 AliTPCComparisonPID.cxx:316 AliTPCComparisonPID.cxx:317 AliTPCComparisonPID.cxx:318 AliTPCComparisonPID.cxx:319 AliTPCComparisonPID.cxx:320 AliTPCComparisonPID.cxx:321 AliTPCComparisonPID.cxx:322 AliTPCComparisonPID.cxx:323 AliTPCComparisonPID.cxx:324 AliTPCComparisonPID.cxx:325 AliTPCComparisonPID.cxx:326 AliTPCComparisonPID.cxx:327 AliTPCComparisonPID.cxx:328 AliTPCComparisonPID.cxx:329 AliTPCComparisonPID.cxx:330 AliTPCComparisonPID.cxx:331 AliTPCComparisonPID.cxx:332 AliTPCComparisonPID.cxx:333 AliTPCComparisonPID.cxx:334 AliTPCComparisonPID.cxx:335 AliTPCComparisonPID.cxx:336 AliTPCComparisonPID.cxx:337 AliTPCComparisonPID.cxx:338 AliTPCComparisonPID.cxx:339 AliTPCComparisonPID.cxx:340 AliTPCComparisonPID.cxx:341 AliTPCComparisonPID.cxx:342 AliTPCComparisonPID.cxx:343 AliTPCComparisonPID.cxx:344 AliTPCComparisonPID.cxx:345 AliTPCComparisonPID.cxx:346 AliTPCComparisonPID.cxx:347 AliTPCComparisonPID.cxx:348 AliTPCComparisonPID.cxx:349 AliTPCComparisonPID.cxx:350 AliTPCComparisonPID.cxx:351 AliTPCComparisonPID.cxx:352 AliTPCComparisonPID.cxx:353 AliTPCComparisonPID.cxx:354