fAODArrayMCInfo(NULL),\r
fHFECuts(0),\r
fPIDTPConly(0),\r
+ fPIDTRDonly(0),\r
fPIDTOFTPC(0),\r
fPIDTPCTRD(0),\r
fPIDTPCEMCal(0),\r
+ fPIDqaTRDonly(0),\r
fPIDqaTOFTPC(0),\r
fPIDqaTPCTRD(0),\r
fPIDqaTPCEMCal(0),\r
fCentralityEstimator("V0M"),\r
fCollisionSystem(3),\r
+ fNbEvent(0),\r
fTPConly(0),\r
fTOFTPC(0),\r
fTPCTRD(0),\r
fTPCEMCal(0),\r
fTPConlydo(kFALSE),\r
+ fTRDonlydo(kFALSE),\r
fTOFTPCdo(kFALSE),\r
fTPCTRDdo(kFALSE),\r
fTPCEMCaldo(kFALSE)\r
fAODArrayMCInfo(NULL),\r
fHFECuts(0),\r
fPIDTPConly(0),\r
+ fPIDTRDonly(0),\r
fPIDTOFTPC(0),\r
fPIDTPCTRD(0),\r
fPIDTPCEMCal(0),\r
+ fPIDqaTRDonly(0),\r
fPIDqaTOFTPC(0),\r
fPIDqaTPCTRD(0),\r
fPIDqaTPCEMCal(0),\r
fCentralityEstimator("V0M"),\r
fCollisionSystem(3),\r
+ fNbEvent(0),\r
fTPConly(0),\r
fTOFTPC(0),\r
fTPCTRD(0),\r
fTPCEMCal(0),\r
fTPConlydo(kFALSE),\r
+ fTRDonlydo(kFALSE),\r
fTOFTPCdo(kFALSE),\r
fTPCTRDdo(kFALSE),\r
fTPCEMCaldo(kFALSE)\r
//\r
\r
fPIDTPConly = new AliHFEpid("hfePidTPConly");\r
+ fPIDTRDonly = new AliHFEpid("hfePidTRDonly");\r
fPIDTOFTPC = new AliHFEpid("hfePidTOFTPC");\r
fPIDTPCTRD = new AliHFEpid("hfePidTPCTRD");\r
fPIDTPCEMCal = new AliHFEpid("hfePidTPCEMCal");\r
\r
+ fPIDqaTRDonly = new AliHFEpidQAmanager;\r
fPIDqaTOFTPC = new AliHFEpidQAmanager;\r
fPIDqaTPCTRD = new AliHFEpidQAmanager;\r
fPIDqaTPCEMCal = new AliHFEpidQAmanager;\r
fAODArrayMCInfo(ref.fAODArrayMCInfo),\r
fHFECuts(NULL),\r
fPIDTPConly(0),\r
+ fPIDTRDonly(0),\r
fPIDTOFTPC(0),\r
fPIDTPCTRD(0),\r
fPIDTPCEMCal(0),\r
+ fPIDqaTRDonly(0),\r
fPIDqaTOFTPC(0),\r
fPIDqaTPCTRD(0),\r
fPIDqaTPCEMCal(0),\r
fCentralityEstimator(ref.fCentralityEstimator),\r
fCollisionSystem(ref.fCollisionSystem),\r
+ fNbEvent(ref.fNbEvent),\r
fTPConly(ref.fTPConly),\r
fTOFTPC(ref.fTOFTPC),\r
fTPCTRD(ref.fTPCTRD),\r
fTPCEMCal(ref.fTPCEMCal),\r
fTPConlydo(ref.fTPConlydo),\r
+ fTRDonlydo(ref.fTRDonlydo),\r
fTOFTPCdo(ref.fTOFTPCdo),\r
fTPCTRDdo(ref.fTPCTRDdo),\r
fTPCEMCaldo(ref.fTPCEMCaldo)\r
target.fAODArrayMCInfo = fAODArrayMCInfo;\r
target.fHFECuts = fHFECuts;\r
target.fPIDTPConly = fPIDTPConly;\r
+ target.fPIDTRDonly = fPIDTRDonly;\r
target.fPIDTOFTPC = fPIDTOFTPC;\r
target.fPIDTPCTRD = fPIDTPCTRD;\r
target.fPIDTPCEMCal = fPIDTPCEMCal;\r
+ target.fPIDqaTRDonly = fPIDqaTRDonly;\r
target.fPIDqaTOFTPC = fPIDqaTOFTPC;\r
target.fPIDqaTPCTRD = fPIDqaTPCTRD;\r
target.fPIDqaTPCEMCal = fPIDqaTPCEMCal;\r
target.fCentralityEstimator = fCentralityEstimator;\r
target.fCollisionSystem = fCollisionSystem;\r
+ target.fNbEvent = fNbEvent;\r
target.fTPConly = fTPConly;\r
target.fTOFTPC = fTOFTPC;\r
target.fTPCTRD = fTPCTRD;\r
target.fTPCEMCal = fTPCEMCal;\r
target.fTPConlydo = fTPConlydo;\r
+ target.fTRDonlydo = fTRDonlydo; \r
target.fTOFTPCdo = fTOFTPCdo;\r
target.fTPCTRDdo = fTPCTRDdo;\r
target.fTPCEMCaldo = fTPCEMCaldo;\r
if(fListHist) delete fListHist;\r
if(fHFECuts) delete fHFECuts;\r
if(fPIDTPConly) delete fPIDTPConly;\r
+ if(fPIDTRDonly) delete fPIDTRDonly;\r
if(fPIDTOFTPC) delete fPIDTOFTPC;\r
if(fPIDTPCTRD) delete fPIDTPCTRD;\r
if(fPIDTPCEMCal) delete fPIDTPCEMCal;\r
\r
// PIDTPConly HFE\r
if(!fPIDTPConly) {\r
- fPIDTPConly =new AliHFEpid("hfePidTPC");\r
+ fPIDTPConly =new AliHFEpid("hfePidTPConly");\r
}\r
if(!fPIDTPConly->GetNumberOfPIDdetectors()) fPIDTPConly->AddDetector("TPC", 0);\r
fPIDTPConly->InitializePID();\r
fPIDTPConly->SortDetectors();\r
\r
+ // PIDTRDonly HFE\r
+ if(!fPIDTRDonly) {\r
+ fPIDTRDonly =new AliHFEpid("hfePidTRDonly");\r
+ }\r
+ if(!fPIDTRDonly->GetNumberOfPIDdetectors()) fPIDTRDonly->AddDetector("TRD", 0);\r
+ fPIDTRDonly->InitializePID();\r
+ fPIDqaTRDonly->Initialize(fPIDTRDonly);\r
+ fPIDTRDonly->SortDetectors();\r
+\r
// PIDTOFTPC HFE\r
if(!fPIDTOFTPC) {\r
fPIDTOFTPC =new AliHFEpid("hfePidTOFTPC");\r
fPIDTPCEMCal->SortDetectors();\r
\r
// Histograms\r
+ fNbEvent = new TH1F("NbEvent", "",11,0,11);\r
+ fNbEvent->Sumw2();\r
Double_t ptbinning[36] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};\r
fTPConly = new TH1F("TPCOnly", "",35,&ptbinning[0]);\r
fTPConly->Sumw2();\r
fListHist = new TList();\r
fListHist->SetOwner();\r
\r
+ fListHist->Add(fPIDqaTRDonly->MakeList("HFEpidQATRDonly"));\r
fListHist->Add(fPIDqaTOFTPC->MakeList("HFEpidQATOFTPC"));\r
fListHist->Add(fPIDqaTPCTRD->MakeList("HFEpidQATPCTRD"));\r
fListHist->Add(fPIDqaTPCEMCal->MakeList("HFEpidQATPCEMCal"));\r
\r
+ fListHist->Add(fNbEvent);\r
fListHist->Add(fTPConly);\r
fListHist->Add(fTOFTPC);\r
fListHist->Add(fTPCTRD);\r
if((90.0< cntr) && (cntr<100.0)) binct = 10.5;\r
if(binct > 11.0) return;\r
}\r
+ else binct = 0.5;\r
AliDebug(2,Form("Centrality %f with %s",binct,fCentralityEstimator.Data()));\r
\r
//////////////////////\r
if(!fPIDTPConly->IsInitialized()){\r
fPIDTPConly->InitializePID(runnumber);\r
}\r
+ if(!fPIDTRDonly->IsInitialized()){\r
+ fPIDTRDonly->InitializePID(runnumber);\r
+ }\r
if(!fPIDTOFTPC->IsInitialized()){\r
fPIDTOFTPC->InitializePID(runnumber);\r
}\r
return;\r
}\r
fPIDTPConly->SetPIDResponse(pidResponse);\r
+ fPIDTRDonly->SetPIDResponse(pidResponse);\r
fPIDTOFTPC->SetPIDResponse(pidResponse);\r
fPIDTPCTRD->SetPIDResponse(pidResponse);\r
fPIDTPCEMCal->SetPIDResponse(pidResponse);\r
PostData(1, fListHist);\r
return;\r
}\r
+ fNbEvent->Fill(binct);\r
\r
//////////////////////////\r
// Loop over track\r
}\r
}\r
AliDebug(2,"TPC only PID\n");\r
+ \r
+ // Complete PID TRD alone\r
+ if(fTRDonlydo) {\r
+ if(fPIDTRDonly->IsSelected(&hfetrack,0x0,"recTrackCont",fPIDqaTRDonly)) {\r
+ AliDebug(2,"Passed TRD only PID\n");\r
+ }\r
+ }\r
+ AliDebug(2,"TRD only PID\n");\r
\r
\r
// Complete PID TPC TOF \r
virtual void UserCreateOutputObjects();\r
\r
void SetDoTPConly(Bool_t tpconlydo) { fTPConlydo = tpconlydo; };\r
+ void SetDoTRDonly(Bool_t trdonlydo) { fTRDonlydo = trdonlydo; };\r
void SetDoTOFTPC(Bool_t toftpcdo) { fTOFTPCdo = toftpcdo; };\r
void SetDoTPCTRD(Bool_t tpctrddo) { fTPCTRDdo = tpctrddo; };\r
void SetDoTPCEMCal(Bool_t tpcemcaldo) { fTPCEMCaldo = tpcemcaldo; };\r
Bool_t IspPb() const { return fCollisionSystem.TestBitNumber(kpPb); }\r
\r
AliHFEpid *GetPIDTPConly() const { return fPIDTPConly; }\r
+ AliHFEpid *GetPIDTRDonly() const { return fPIDTRDonly; }\r
AliHFEpid *GetPIDTOFTPC() const { return fPIDTOFTPC; }\r
AliHFEpid *GetPIDTPCTRD() const { return fPIDTPCTRD; }\r
AliHFEpid *GetPIDTPCEMCal() const { return fPIDTPCEMCal; }\r
+ AliHFEpidQAmanager *GetPIDQAManagerTRDonly() const { return fPIDqaTRDonly; }\r
AliHFEpidQAmanager *GetPIDQAManagerTOFTPC() const { return fPIDqaTOFTPC; }\r
AliHFEpidQAmanager *GetPIDQAManagerTPCTRD() const { return fPIDqaTPCTRD; }\r
AliHFEpidQAmanager *GetPIDQAManagerTPCEMCal() const { return fPIDqaTPCEMCal; }\r
// Cuts for HFE\r
AliHFEcuts *fHFECuts; // HFE cuts\r
AliHFEpid *fPIDTPConly; // PID cuts \r
+ AliHFEpid *fPIDTRDonly; // PID cuts \r
AliHFEpid *fPIDTOFTPC; // PID cuts TOF-TPC only\r
AliHFEpid *fPIDTPCTRD; // PID cuts TPC-TRD \r
AliHFEpid *fPIDTPCEMCal; // PID cuts TPC-EMCal \r
+ AliHFEpidQAmanager *fPIDqaTRDonly; // QA Manager TOF TPC\r
AliHFEpidQAmanager *fPIDqaTOFTPC; // QA Manager TOF TPC\r
AliHFEpidQAmanager *fPIDqaTPCTRD; // QA Manager TPC TRD\r
AliHFEpidQAmanager *fPIDqaTPCEMCal; // QA Manager TPC EMCal\r
TBits fCollisionSystem; // Collision System;\r
\r
// Histo yields\r
+ TH1F *fNbEvent; // Number of events\r
TH1F *fTPConly; // TPC only electron yield\r
TH1F *fTOFTPC; // TOF TPC electron yield\r
TH1F *fTPCTRD; // TPC TRD electron yield\r
\r
// Do PID or not\r
Bool_t fTPConlydo; // Do TPC only PID\r
+ Bool_t fTRDonlydo; // Do TRD only PID\r
Bool_t fTOFTPCdo; // Do TOF TPC \r
Bool_t fTPCTRDdo; // Do TPC TRD \r
Bool_t fTPCEMCaldo; // Do TPC EMCal \r
\r
\r
\r
- ClassDef(AliAnalysisTaskHFEQA, 2); // analysisclass\r
+ ClassDef(AliAnalysisTaskHFEQA, 3); // analysisclass\r
};\r
\r
#endif\r
AliHFEpidObject::AnalysisType_t anatype = track->IsESDanalysis() ? AliHFEpidObject::kESDanalysis: AliHFEpidObject::kAODanalysis;
Double_t p = GetP(track->GetRecTrack(), anatype);
if(p < fMinP){
- AliDebug(2, Form("Track momentum below %f", fMinP));
+ AliDebug(2, Form("Track momentum %f below %f", p, fMinP));
return 0;
}
-
+ AliDebug(2, Form("Track momentum %f above %f", p, fMinP));
+
if(pidqa) pidqa->ProcessTrack(track, AliHFEpid::kTRDpid, AliHFEdetPIDqa::kBeforePID);
+ AliDebug(1,"PID qa done for step before\n");
if(fCutNTracklets > 0){
AliDebug(1, Form("Number of tracklets cut applied: %d\n", fCutNTracklets));
Float_t fCentralityLimitsdefault[12]= {0.,5.,10., 20., 30., 40., 50., 60.,70.,80., 90., 100.};
Float_t centrality=-1;
if(centralitybin>=0) centrality=fCentralityLimitsdefault[centralitybin]+1;
+ AliDebug(2, Form("Just before cutting Electron effi: %f %i %i %f\n", fElectronEfficiency,track->GetCentrality(),centralitybin,centrality));
if(fkPIDResponse->IdentifiedAsElectronTRD(track->GetRecTrack(),fElectronEfficiency,centrality,AliTRDPIDResponse::kLQ2D)){
AliDebug(2, Form("Electron effi: %f %i %i %f\n", fElectronEfficiency,track->GetCentrality(),centralitybin,centrality));
if(pidqa) pidqa->ProcessTrack(track, AliHFEpid::kTRDpid, AliHFEdetPIDqa::kAfterPID);
+ AliDebug(1,"PID qa done for step after\n");
return 11;
} else return 211;
//
// Get TRD likelihoods for ESD respectively AOD tracks
//
+ AliDebug(1, "Starting getting TRD likelihood\n");
Double_t pidProbs[AliPID::kSPECIES]; memset(pidProbs, 0, sizeof(Double_t) * AliPID::kSPECIES);
if(anaType == AliHFEpidObject::kESDanalysis){
const AliESDtrack *esdtrack = dynamic_cast<const AliESDtrack *>(track);
if(fTRD2DPID) fkPIDResponse->ComputeTRDProbability(track, AliPID::kSPECIES, pidProbs,AliTRDPIDResponse::kLQ2D);
else fkPIDResponse->ComputeTRDProbability(track, AliPID::kSPECIES, pidProbs,AliTRDPIDResponse::kLQ1D);
}
+ for(Int_t k=0; k < AliPID::kSPECIES; k++) {
+ AliDebug(2, Form("proba: %f for %d\n", pidProbs[k],k));
+ }
if(!IsRenormalizeElPi()) return pidProbs[AliPID::kElectron];
Double_t probsNew[AliPID::kSPECIES];
RenormalizeElPi(pidProbs, probsNew);
container[2] = pidResponse ? pidResponse->NumberOfSigmasTPC(track->GetRecTrack(), AliPID::kElectron) : 0.;
container[3] = step;
container[4] = track->GetCentrality();
+ AliDebug(1, Form("Species %d, p %f, number of sigma TPC %f, step %f, centrality %f", (Int_t)species,(Float_t) container[1],(Float_t) container[2],(Float_t) container[3],(Float_t) container[4]));
fHistos->Fill("hTPCsigma", container);
+ AliDebug(1, "Filled TPC sigma\n");
+
+
container[2] = trdpid ? trdpid->GetElectronLikelihood(static_cast<const AliVTrack*>(track->GetRecTrack()), anatype) : 0;
fHistos->Fill("hTRDlikelihood", container);
+ AliDebug(1, "Filled likelihood\n");
if(track->IsESDanalysis()){
const AliESDtrack *esdtrack = dynamic_cast<const AliESDtrack *>(track->GetRecTrack());
container[2] = trdpid ? trdpid->GetChargeLayer(track->GetRecTrack(), ily, anatype) : 0;
if(container[2] < 1e-3) continue; // Filter out 0 entries
fHistos->Fill("hTRDcharge", container);
+ AliDebug(1, "Filled TRD charge\n");
}
Int_t ntracklets = track->GetRecTrack()->GetTRDntrackletsPID();
fHistos->Fill("hNtrackletsBefore", trdpid ? trdpid->GetP(track->GetRecTrack(), anatype) : 0., ntracklets);
else
fHistos->Fill("hNtrackletsAfter", trdpid ? trdpid->GetP(track->GetRecTrack(), anatype) : 0., ntracklets);
+ AliDebug(1, "Filled tracklet\n");
}
//_________________________________________________________
-AliAnalysisTask *AddTaskHFEQA(Bool_t useMC, Bool_t isAOD, Int_t icollisionsystem = 2, Int_t icent = 2,Int_t debuglevel = 4,Bool_t tpconlydo = kTRUE,Bool_t toftpcdo = kTRUE,Bool_t tpctrddo = kTRUE,Bool_t tpcemcaldo = kTRUE){
+AliAnalysisTask *AddTaskHFEQA(Bool_t useMC, Bool_t isAOD, Int_t icollisionsystem = 2, Int_t icent = 2,Int_t debuglevel = 4,Bool_t tpconlydo = kTRUE,Bool_t trdonlydo = kTRUE,Bool_t toftpcdo = kTRUE,Bool_t tpctrddo = kTRUE,Bool_t tpcemcaldo = kTRUE){
// Name
TString appendixx("HFEQA");
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
- AliAnalysisTaskHFEQA *task = ConfigHFEQA(useMC,isAOD,icollisionsystem,icent,tpconlydo,toftpcdo,tpctrddo,tpcemcaldo);
+ AliAnalysisTaskHFEQA *task = ConfigHFEQA(useMC,isAOD,icollisionsystem,icent,tpconlydo,trdonlydo,toftpcdo,tpctrddo,tpcemcaldo);
mgr->AddTask(task);
mgr->AddClassDebug("AliAnalysisTaskHFEQA",debuglevel);
- mgr->AddClassDebug("AliHFEpid",debuglevel);
- mgr->AddClassDebug("AliHFEpidTPC",debuglevel);
- mgr->AddClassDebug("AliHFEpidTOF",debuglevel);
+ //mgr->AddClassDebug("AliHFEpid",debuglevel);
+ //mgr->AddClassDebug("AliHFEpidTPC",debuglevel);
+ //mgr->AddClassDebug("AliHFEpidTOF",debuglevel);
mgr->AddClassDebug("AliHFEpidTRD",debuglevel);
+ mgr->AddClassDebug("AliHFEtrdPIDqaV1",debuglevel);
+ mgr->AddClassDebug("AliPIDResponse",debuglevel);
+ mgr->AddClassDebug("AliTRDPIDResponse",debuglevel);
TString containerName = mgr->GetCommonFileName();
containerName += ":";
-AliAnalysisTaskHFEQA* ConfigHFEQA(Bool_t useMC, Bool_t isAOD, Int_t icollisionsystem = 2, Int_t icent = 2,Bool_t tpconlydo = kTRUE,Bool_t toftpcdo = kTRUE,Bool_t tpctrddo = kTRUE,Bool_t tpcemcaldo = kTRUE){
+AliAnalysisTaskHFEQA* ConfigHFEQA(Bool_t useMC, Bool_t isAOD, Int_t icollisionsystem = 2, Int_t icent = 2,Bool_t tpconlydo = kTRUE,Bool_t trdonlydo = kTRUE,Bool_t toftpcdo = kTRUE,Bool_t tpctrddo = kTRUE,Bool_t tpcemcaldo = kTRUE){
//***************************************//
// Setting up the HFE cuts //
// Configure the PID //
//***************************************//
- if(tpconlydo) task->SetDoTPConly(kTRUE);
- if(toftpcdo) task->SetDoTOFTPC(kTRUE);
- if(tpctrddo) task->SetDoTPCTRD(kTRUE);
- if(tpcemcaldo) task->SetDoTPCEMCal(kTRUE);
+ if(tpconlydo) {
+ task->SetDoTPConly(kTRUE);
+ }
+ if(trdonlydo) {
+ task->SetDoTRDonly(kTRUE);
+ task->GetPIDQAManagerTRDonly()->SetHighResolutionHistos();
+ }
+ if(toftpcdo) {
+ task->SetDoTOFTPC(kTRUE);
+ task->GetPIDQAManagerTOFTPC()->SetHighResolutionHistos();
+ }
+ if(tpctrddo) {
+ task->SetDoTPCTRD(kTRUE);
+ task->GetPIDQAManagerTPCTRD()->SetHighResolutionHistos();
+ }
+ if(tpcemcaldo) {
+ task->SetDoTPCEMCal(kTRUE);
+ task->GetPIDQAManagerTPCEMCal()->SetHighResolutionHistos();
+ }
AliHFEpid *pidTPConly = task->GetPIDTPConly();
if(useMC) pidTPConly->SetHasMCData(kTRUE);
trdpid->SetNTracklets(6); // ntracklets threshold
trdpid->SetCutNTracklets(6, kTRUE);
+ // TRD only
+ AliHFEpid *pidTRDonly = task->GetPIDTRDonly();
+ if(useMC) pidTRDonly->SetHasMCData(kTRUE);
+ pidTRDonly->AddDetector("TRD", 0);
+
+ AliHFEpidTRD *trdonlypid = pidTRDonly->GetDetPID(AliHFEpid::kTRDpid);
+ trdonlypid->SetTRD2DPID();
+ trdonlypid->SetElectronEfficiency(0.80); // efficiency
+ trdonlypid->SetNTracklets(6); // ntracklets threshold
+ trdonlypid->SetCutNTracklets(6, kTRUE);
+
// change E/p cuts
AliHFEpidEMCAL *emcpid = pidTPCEMCal->AliHFEpid::GetDetPID(AliHFEpid::kEMCALpid);
emcpid->SetEoPMax(1.3);