fNPtBins(8),
fMinMult(0),
fMaxMult(1e9),
- fCutDCAXY(1.e10),
- fCutDCAZ(1.e10),
+ fCutDCAXY(100.),
+ fCutDCAZ(100.),
fFitter(0),
fITSSumTP(),
fTPTree(),
fITSSumTP = new AliITSSumTP();
fTPTree = new TTree("ITSSumTP","ITS TP Summary");
fTPTree->Branch("AliITSSumTP","AliITSSumTP",&fITSSumTP);
- CreateUserInfo();
PostData(2,fTPTree);
}
//
firstCheck = kFALSE;
}
//
+ fHistNEvents->Fill(kEvAll);
+ //
if (!AcceptCentrality(esd)) return;
fHistNEvents->Fill(kEvCnt);
const AliESDVertex* vtx=0,*vtxSPD=0;
- fHistNEvents->Fill(kEvAll);
vtx = esd->GetPrimaryVertex();
vtxSPD = esd->GetPrimaryVertexSPD();
//
}
//
if (fITSSumTP) { // store vertex and mometum info
+ double xyz[3]={0,0,0};
fITSSumTP->SetVertex(vtx);
TObjArray& tps = fITSSumTP->GetTracks();
int ntp = tps.GetEntriesFast();
double crve = TMath::Sqrt(esdTr->GetSigma1Pt2()) * esd->GetMagneticField()*kB2C;
fITSSumTP->SetCrvGlo(it,crv);
fITSSumTP->SetCrvGloErr(it,crve);
- const AliExternalTrackParam* inTPC = esdTr->GetTPCInnerParam();
+ const AliExternalTrackParam* inTPC = esdTr->GetTPCInnerParam(); // TPC track at vtx
if (inTPC) {
crv = inTPC->GetC(esd->GetMagneticField());
- crve = TMath::Sqrt(inTPC->GetSigma1Pt2()) * esd->GetMagneticField()*kB2C;
+ crve = TMath::Sqrt(inTPC->GetSigma1Pt2()) * TMath::Abs(esd->GetMagneticField()*kB2C);
fITSSumTP->SetCrvTPC(it,crv);
fITSSumTP->SetCrvTPCErr(it,crve);
}
+ inTPC = esdTr->GetInnerParam(); // TPC track at the inner wall
+ if (inTPC) {
+ inTPC->GetXYZ(xyz);
+ fITSSumTP->SetTPCInnerXYZ(it,xyz);
+ }
}
fITSSumTP->SetUniqueID(fCurrentRunNumber);
if (ntp) fTPTree->Fill();
+ CopyUserInfo();
}
//
}else{
printf("Warning: pointer to fHistNEvents is NULL\n");
}
+ //
+ if (fDoFillTPTree) CreateUserInfo();
+ //
return;
}
AliError("TrackPoints summary tree does not exist");
return;
}
+ TList* uInfo = fTPTree->GetUserInfo();
+ TMap *cdbMapCopy = (TMap*)uInfo->FindObject("cdbMap");
+ TList *cdbListCopy = (TList*)uInfo->FindObject("cdbList");
+ TList *bzList = (TList*)uInfo->FindObject("BzkGauss");
+ if (cdbMapCopy && cdbListCopy && bzList) return; //already done
//
const TMap *cdbMap = AliCDBManager::Instance()->GetStorageMap();
const TList *cdbList = AliCDBManager::Instance()->GetRetrievedIds();
//
- TMap *cdbMapCopy = new TMap(cdbMap->GetEntries());
+ cdbMapCopy = new TMap(cdbMap->GetEntries());
cdbMapCopy->SetOwner(1);
cdbMapCopy->SetName("cdbMap");
TIter iter(cdbMap->GetTable());
while((pair = dynamic_cast<TPair*> (iter.Next()))){
TObjString* keyStr = dynamic_cast<TObjString*> (pair->Key());
TObjString* valStr = dynamic_cast<TObjString*> (pair->Value());
- if (keyStr && valStr) cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));
+ if (keyStr && valStr) {
+ cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));
+ AliInfo(Form("Add %s : %s to cdbMap of ITSTPUserInfo",keyStr->GetName(),valStr->GetName()));
+ }
}
-
- TList *cdbListCopy = new TList();
+ //
+ cdbListCopy = new TList();
cdbListCopy->SetOwner(1);
cdbListCopy->SetName("cdbList");
//
AliCDBId* id=0;
while((id = dynamic_cast<AliCDBId*> (iter2.Next()))){
cdbListCopy->Add(new TObjString(id->ToString().Data()));
+ AliInfo(Form("Add %s to cdbList of ITSTPUserInfo",id->ToString().Data()));
+ }
+ //
+ uInfo->Add(cdbMapCopy);
+ uInfo->Add(cdbListCopy);
+ //
+ AliMagF *fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+ Double_t bz = fld ? fld->SolenoidField() : 0;
+ TString bzString; bzString+=bz;
+ TObjString *bzObjString = new TObjString(bzString);
+ bzList = new TList();
+ bzList->SetOwner(1);
+ bzList->SetName("BzkGauss");
+ bzList->Add(bzObjString);
+ uInfo->Add(bzList);
+ //
+}
+
+//_______________________________________________________________________________________
+void AliAnalysisTaskITSAlignQA::CopyUserInfo()
+{
+ // if available, copy the UserInfo from the ESDtree to the output tree
+ static Bool_t done = kFALSE;
+ if (done) return;
+ if (!fTPTree) {
+ AliError("TrackPoints summary tree does not exist");
+ return;
+ }
+ AliESDInputHandler *handler = (AliESDInputHandler*)AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
+ TTree* esdTree = 0;
+ if (!handler || !(esdTree=handler->GetTree())) return;
+ if (esdTree->InheritsFrom(TChain::Class())) esdTree = esdTree->GetTree();
+ TList* uInfoSrc = esdTree->GetUserInfo();
+ const TMap *cdbMapSrc = (TMap*)uInfoSrc->FindObject("cdbMap");
+ const TList *cdbListSrc = (TList*)uInfoSrc->FindObject("cdbList");
+ if (!cdbMapSrc || !cdbListSrc) return;
+ //
+ AliInfo("Create ITSTPUserInfo from esdTree");
+ TList* uInfoDst = fTPTree->GetUserInfo();
+ //
+ TMap *cdbMapCopy = new TMap(cdbMapSrc->GetEntries());
+ cdbMapCopy->SetOwner(1);
+ cdbMapCopy->SetName("cdbMap");
+ TIter iter(cdbMapSrc->GetTable());
+ TPair* pair = 0;
+ while((pair = dynamic_cast<TPair*> (iter.Next()))){
+ TObjString* keyStr = dynamic_cast<TObjString*> (pair->Key());
+ TObjString* valStr = dynamic_cast<TObjString*> (pair->Value());
+ if (keyStr && valStr) {
+ cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));
+ AliInfo(Form("Add %s : %s to cdbMap of ITSTPUserInfo",keyStr->GetName(),valStr->GetName()));
+ }
+ }
+ //
+ TList *cdbListCopy = new TList();
+ cdbListCopy->SetOwner(1);
+ cdbListCopy->SetName("cdbList");
+ //
+ TIter iter2(cdbListSrc);
+ TObjString* id=0;
+ while((id = dynamic_cast<TObjString*> (iter2.Next()))){
+ cdbListCopy->Add(new TObjString(*id));
+ AliInfo(Form("Add %s to cdbList of ITSTPUserInfo",id->GetName()));
}
//
- fTPTree->GetUserInfo()->Add(cdbMapCopy);
- fTPTree->GetUserInfo()->Add(cdbListCopy);
+ uInfoDst->Add(cdbMapCopy);
+ uInfoDst->Add(cdbListCopy);
//
AliMagF *fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
Double_t bz = fld ? fld->SolenoidField() : 0;
bzList->SetOwner(1);
bzList->SetName("BzkGauss");
bzList->Add(bzObjString);
- fTPTree->GetUserInfo()->Add(bzList);
+ uInfoDst->Add(bzList);
//
+ done = kTRUE;
}