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=static_cast<TH1F*>(fList->At(3));
Float_t ratio = (float)n/(float)ntracks;
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();
}
//________________________________________________________________________
#include <AliESDEvent.h>
#include <AliRelAlignerKalman.h>
#include "AliRelAlignerKalmanArray.h"
+#include "TList.h"
+#include "TBrowser.h"
ClassImp(AliRelAlignerKalmanArray)
fOutRejSigmaOnMerge(10.),
fOutRejSigmaOnSmooth(1.),
fAlignerTemplate(),
- fPArray(NULL)
+ fPArray(NULL),
+ fListOfGraphs(NULL)
{
//ctor
}
fOutRejSigmaOnMerge(10.),
fOutRejSigmaOnSmooth(1.),
fAlignerTemplate(),
- fPArray(NULL)
+ fPArray(NULL),
+ fListOfGraphs(new TList)
{
//ctor
if (slotwidth==0) fSize = 1;
fPArray = new AliRelAlignerKalman* [fSize];
if (fPArray) for (Int_t i=0;i<fSize;i++){fPArray[i]=NULL;}//fill with zeros
else fSize=0;
+ fListOfGraphs->SetName("graphs");
+ fListOfGraphs->SetOwner(kTRUE);
}
//______________________________________________________________________________
fOutRejSigmaOnMerge(in.fOutRejSigmaOnMerge),
fOutRejSigmaOnSmooth(in.fOutRejSigmaOnSmooth),
fAlignerTemplate(in.fAlignerTemplate),
- fPArray(NULL)
+ fPArray(NULL),
+ fListOfGraphs(new TList)
{
//copy ctor
fPArray = new AliRelAlignerKalman* [fSize];
if (in.fPArray[i]) fPArray[i]=new AliRelAlignerKalman(*(in.fPArray[i]));
else fPArray[i]=NULL;
}
+ fListOfGraphs->SetName("graphs");
+ fListOfGraphs->SetOwner(kTRUE);
}
//______________________________________________________________________________
//dtor
ClearContents();
delete [] fPArray;
+ delete fListOfGraphs;
}
//______________________________________________________________________________
if (!a1 && a2) fPArray[i] = new AliRelAlignerKalman(*a2);
}
}
+ fListOfGraphs->Delete();
return 0;
}
return NULL;
}
- TVectorD vx(GetEntries());
- TVectorD vy(GetEntries());
- TVectorD vex(GetEntries());
- TVectorD vey(GetEntries());
+ Int_t n=GetEntries();
+ TVectorD vx(n);
+ TVectorD vy(n);
+ TVectorD vex(n);
+ TVectorD vey(n);
Int_t entry=0;
for (Int_t i=0; i<fSize; i++)
{
graphtitley="dv/dy [cm/\\micros/m]";
break;
}
+ graph->SetName(graphtitle);
graph->SetTitle(graphtitle);
TAxis* xas = graph->GetXaxis();
TAxis* yas = graph->GetYaxis();
(*cov) += corr;
}
+//______________________________________________________________________________
+void AliRelAlignerKalmanArray::Browse(TBrowser* b )
+{
+ if (!b) return;
+ if (!fListOfGraphs)
+ {
+ fListOfGraphs=new TList();
+ fListOfGraphs->SetName("graphs");
+ fListOfGraphs->SetOwner(kTRUE);
+ }
+ for (Int_t i=0;i<9;i++)
+ {
+ TGraphErrors* gr = dynamic_cast<TGraphErrors*>(fListOfGraphs->At(i));
+ if (gr) continue;
+ fListOfGraphs->AddAt(MakeGraph(i),i);
+ }
+ b->Add(fListOfGraphs);
+}
+