void AliAnalysisTaskITSTPCalignment::UserCreateOutputObjects()
{
// Create output objects
- // Called once
+
fArrayITSglobal = new AliRelAlignerKalmanArray();
- fArrayITSglobal->SetName("outputArrayITSglobal");
+ fArrayITSglobal->SetName("array ITS global");
fArrayITSglobal->SetupArray(fT0,fTend,fSlotWidth);
fArrayITSglobal->SetOutRejSigmaOnMerge(fOutRejSigmaOnMerge);
//set up the template
templ->SetRejectOutliersSigma2Median(fRejectOutliersSigma2Median);
templ->SetOutRejSigma2Median(fOutRejSigma2Median);
fArrayITSsa = new AliRelAlignerKalmanArray();
- fArrayITSsa->SetName("outputArrayITSsa");
+ fArrayITSsa->SetName("array ITS SA");
fArrayITSsa->SetupArray(fT0,fTend,fSlotWidth);
fArrayITSsa->SetOutRejSigmaOnMerge(fOutRejSigmaOnMerge);
//set up the template
templ->SetOutRejSigma2Median(fOutRejSigma2Median);
fList = new TList();
+ fList->SetName("QA");
+ fList->SetOwner(kTRUE);
TH2F* pZYAResidualsHistBpos = new TH2F("fZYAResidualsHistBpos","z-r\\phi residuals side A (z>0), Bpos", 100, -4., 4., 100, -1.5, 1.5 );
pZYAResidualsHistBpos->SetXTitle("\\deltaz [cm]");
pLowPtZCResidualsHistBpos->SetXTitle("Pt");
pLowPtZCResidualsHistBpos->SetYTitle("\\deltaz [cm]");
TList* listBpos = new TList();
+ listBpos->SetName("B+");
+ listBpos->SetOwner(kTRUE);
fList->Add(listBpos); //0
listBpos->Add(pZYAResidualsHistBpos);
listBpos->Add(pZYCResidualsHistBpos);
pLowPtZCResidualsHistBneg->SetXTitle("Pt");
pLowPtZCResidualsHistBneg->SetYTitle("\\deltaz [cm]");
TList* listBneg = new TList();
+ listBneg->SetName("B-");
+ listBneg->SetOwner(kTRUE);
fList->Add(listBneg); //1
listBneg->Add(pZYAResidualsHistBneg);
listBneg->Add(pZYCResidualsHistBneg);
pLowPtZCResidualsHistBnil->SetXTitle("Pt");
pLowPtZCResidualsHistBnil->SetYTitle("\\deltaz [cm]");
TList* listBnil = new TList();
+ listBnil->SetName("B0");
+ listBnil->SetOwner(kTRUE);
fList->Add(listBnil); //2
listBnil->Add(pZYAResidualsHistBnil);
listBnil->Add(pZYCResidualsHistBnil);
listBnil->Add(pLowPtYCResidualsHistBnil);
listBnil->Add(pLowPtZAResidualsHistBnil);
listBnil->Add(pLowPtZCResidualsHistBnil);
+
TH1F* pNmatchingEff=new TH1F("pNmatchingEff","matching efficiency",50,0.,1.);
fList->Add(pNmatchingEff); //3
- TH1I* pChecks = new TH1I("pChecks","various checks",10,0,10);
+ TH1I* pChecks = new TH1I("some counters","some counters",10,0,10);
pChecks->GetXaxis()->SetBinLabel(1+kNoESD,"no ESD");
pChecks->GetXaxis()->SetBinLabel(1+kNoESDfriend,"no ESDfriend");
pChecks->GetXaxis()->SetBinLabel(1+kNoFriendTrack,"no friendtrack");
- pChecks->GetXaxis()->SetBinLabel(1+kNoITSoutParams,"no params");
- pChecks->GetXaxis()->SetBinLabel(1+kESDfriend,"ESD friends");
+ pChecks->GetXaxis()->SetBinLabel(1+kNoITSoutParams,"no ITS out params");
+ pChecks->GetXaxis()->SetBinLabel(1+kESDfriend,"ESD friend");
pChecks->GetXaxis()->SetBinLabel(1+kFriendsSkipBit,"friends+skipbit");
pChecks->GetXaxis()->SetBinLabel(1+kFriendTrack,"friendtrack");
- pChecks->GetXaxis()->SetBinLabel(1+kITSoutParams,"params");
+ pChecks->GetXaxis()->SetBinLabel(1+kITSoutParams,"ITS out params");
fList->Add(pChecks); //4
fAligner = new AliRelAlignerKalman();
fDebugTree = new TTree("debugTree","tree with debug info");
fDebugTree->Branch("aligner","AliRelAlignerKalman",&fAligner);
+
+ // Post output data.
+ PostData(0, fDebugTree);
+ PostData(1, fList);
+ PostData(2, fArrayITSglobal);
+ PostData(3, fArrayITSsa);
}
//________________________________________________________________________
pChecks->Fill(kESDfriend);
}
- if (eventFriend->TestSkipBit()) pChecks->Fill(kFriendsSkipBit);
+ //event->SetESDfriend(eventFriend);
+
+ if (eventFriend->TestSkipBit())
+ {
+ pChecks->Fill(kFriendsSkipBit);
+ return;
+ }
//Update the parmeters
AnalyzeESDevent(event);
-
- // Post output data.
- PostData(0, fDebugTree);
- PostData(1, fList);
- PostData(2, fArrayITSglobal);
- PostData(3, fArrayITSsa);
}
//________________________________________________________________________
TObjArray arrayParamTPC(ntracks);
Int_t n = FindMatchingTracks(arrayParamITS, arrayParamTPC, event);
- AliInfo(Form("n matched: %i\n",n));
+ AliInfo(Form("matched tracklet pairs: %i\n",n));
- TH1F* nMatchingEff=dynamic_cast<TH1F*>(fList->At(3));
+ TH1F* nMatchingEff=static_cast<TH1F*>(fList->At(3));
Float_t ratio = (float)n/(float)ntracks;
nMatchingEff->Fill(ratio);
for (Int_t i=0;i<n;i++)
{
- AliExternalTrackParam* paramsITS=dynamic_cast<AliExternalTrackParam*>(arrayParamITS[i]);
- AliExternalTrackParam* paramsTPC=dynamic_cast<AliExternalTrackParam*>(arrayParamTPC[i]);
+ AliExternalTrackParam* paramsITS=static_cast<AliExternalTrackParam*>(arrayParamITS[i]);
+ AliExternalTrackParam* paramsTPC=static_cast<AliExternalTrackParam*>(arrayParamTPC[i]);
+
+ if (!(paramsITS&¶msTPC)) continue;
//QA
if (fDoQA) DoQA(paramsITS,paramsTPC);
fAligner->SetTimeStamp(event->GetTimeStamp());
}
- //alignment check
+ //alignment
if (alignerSA) alignerSA->AddTrackParams(paramsITS, paramsTPC);
}
arrayParamITS.Delete();
void AliAnalysisTaskITSTPCalignment::Terminate(Option_t *)
{
// Called once at the end of the query
+ fArrayITSsa->Print("a");
+ fAligner->Print();
}
//________________________________________________________________________
}//else
}//for j
}//for i
+ delete [] matchedArr;
return iMatched+1;
}
TList* pList=NULL;
Double_t field = fInputEvent->GetMagneticField();
- if (field >= 1.) pList = dynamic_cast<TList*>(fList->At(0));
- if (field <= -1.) pList = dynamic_cast<TList*>(fList->At(1));
- if (field < 1. && field > -1.) pList = dynamic_cast<TList*>(fList->At(2));
+ if (field >= 1.) pList = static_cast<TList*>(fList->At(0));
+ if (field <= -1.) pList = static_cast<TList*>(fList->At(1));
+ if (field < 1. && field > -1.) pList = static_cast<TList*>(fList->At(2));
if (!pList) return;
- TH2F* pZYAResidualsHist = dynamic_cast<TH2F*>(pList->At(0));
- TH2F* pZYCResidualsHist = dynamic_cast<TH2F*>(pList->At(1));
- TH2F* pLPAResidualsHist = dynamic_cast<TH2F*>(pList->At(2));
- TH2F* pLPCResidualsHist = dynamic_cast<TH2F*>(pList->At(3));
- TH2F* pPhiYAResidualsHist = dynamic_cast<TH2F*>(pList->At(4));
- TH2F* pPhiYCResidualsHist = dynamic_cast<TH2F*>(pList->At(5));
- TH2F* pPhiZAResidualsHist = dynamic_cast<TH2F*>(pList->At(6));
- TH2F* pPhiZCResidualsHist = dynamic_cast<TH2F*>(pList->At(7));
- TH2F* pPtYAResidualsHist = dynamic_cast<TH2F*>(pList->At(8));
- TH2F* pPtYCResidualsHist = dynamic_cast<TH2F*>(pList->At(9));
- TH2F* pPtZAResidualsHist = dynamic_cast<TH2F*>(pList->At(10));
- TH2F* pPtZCResidualsHist = dynamic_cast<TH2F*>(pList->At(11));
- TH2F* pLowPtYAResidualsHist = dynamic_cast<TH2F*>(pList->At(12));
- TH2F* pLowPtYCResidualsHist = dynamic_cast<TH2F*>(pList->At(13));
- TH2F* pLowPtZAResidualsHist = dynamic_cast<TH2F*>(pList->At(14));
- TH2F* pLowPtZCResidualsHist = dynamic_cast<TH2F*>(pList->At(15));
+ TH2F* pZYAResidualsHist = static_cast<TH2F*>(pList->At(0));
+ TH2F* pZYCResidualsHist = static_cast<TH2F*>(pList->At(1));
+ TH2F* pLPAResidualsHist = static_cast<TH2F*>(pList->At(2));
+ TH2F* pLPCResidualsHist = static_cast<TH2F*>(pList->At(3));
+ TH2F* pPhiYAResidualsHist = static_cast<TH2F*>(pList->At(4));
+ TH2F* pPhiYCResidualsHist = static_cast<TH2F*>(pList->At(5));
+ TH2F* pPhiZAResidualsHist = static_cast<TH2F*>(pList->At(6));
+ TH2F* pPhiZCResidualsHist = static_cast<TH2F*>(pList->At(7));
+ TH2F* pPtYAResidualsHist = static_cast<TH2F*>(pList->At(8));
+ TH2F* pPtYCResidualsHist = static_cast<TH2F*>(pList->At(9));
+ TH2F* pPtZAResidualsHist = static_cast<TH2F*>(pList->At(10));
+ TH2F* pPtZCResidualsHist = static_cast<TH2F*>(pList->At(11));
+ TH2F* pLowPtYAResidualsHist = static_cast<TH2F*>(pList->At(12));
+ TH2F* pLowPtYCResidualsHist = static_cast<TH2F*>(pList->At(13));
+ TH2F* pLowPtZAResidualsHist = static_cast<TH2F*>(pList->At(14));
+ TH2F* pLowPtZCResidualsHist = static_cast<TH2F*>(pList->At(15));
if (paramsITS->GetZ() > 0.0)
{