]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGPP/ITS/AliAnalysisTaskITSAlignQA.cxx
merge trending into current dir instead of terget dir
[u/mrichter/AliRoot.git] / PWGPP / ITS / AliAnalysisTaskITSAlignQA.cxx
index e6ccd333c1ad3dc565d2b8cd0f5366f978f70212..f16174fd1fc2e780bc14bec88683565969f0c75f 100644 (file)
@@ -78,8 +78,8 @@ AliAnalysisTaskITSAlignQA::AliAnalysisTaskITSAlignQA() : AliAnalysisTaskSE("SDD
   fNPtBins(8),
   fMinMult(0),
   fMaxMult(1e9),
-  fCutDCAXY(1.e10),
-  fCutDCAZ(1.e10),
+  fCutDCAXY(100.),
+  fCutDCAZ(100.),
   fFitter(0),
   fITSSumTP(),
   fTPTree(),
@@ -143,7 +143,6 @@ void AliAnalysisTaskITSAlignQA::UserCreateOutputObjects() {
     fITSSumTP = new AliITSSumTP();
     fTPTree = new TTree("ITSSumTP","ITS TP Summary");
     fTPTree->Branch("AliITSSumTP","AliITSSumTP",&fITSSumTP);
-    CreateUserInfo();
     PostData(2,fTPTree);
   }
   //
@@ -340,11 +339,12 @@ void AliAnalysisTaskITSAlignQA::UserExec(Option_t *)
     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();
   //
@@ -405,6 +405,7 @@ void AliAnalysisTaskITSAlignQA::UserExec(Option_t *)
   }
   //
   if (fITSSumTP) { // store vertex and mometum info
+    double xyz[3]={0,0,0};
     fITSSumTP->SetVertex(vtx);
     TObjArray& tps = fITSSumTP->GetTracks();
     int ntp = tps.GetEntriesFast();
@@ -417,16 +418,22 @@ void AliAnalysisTaskITSAlignQA::UserExec(Option_t *)
       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();
   }
 
   //
@@ -695,6 +702,9 @@ void AliAnalysisTaskITSAlignQA::Terminate(Option_t */*option*/)
   }else{
     printf("Warning: pointer to fHistNEvents is NULL\n");
   }
+  //
+  if (fDoFillTPTree) CreateUserInfo();
+  //
   return;
 }
 
@@ -791,11 +801,16 @@ void AliAnalysisTaskITSAlignQA::CreateUserInfo()
     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());       
@@ -804,10 +819,13 @@ void AliAnalysisTaskITSAlignQA::CreateUserInfo()
   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");      
   // 
@@ -815,10 +833,73 @@ void AliAnalysisTaskITSAlignQA::CreateUserInfo()
   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;
@@ -828,6 +909,7 @@ void AliAnalysisTaskITSAlignQA::CreateUserInfo()
   bzList->SetOwner(1);  
   bzList->SetName("BzkGauss");  
   bzList->Add(bzObjString);
-  fTPTree->GetUserInfo()->Add(bzList);
+  uInfoDst->Add(bzList);
   //
+  done = kTRUE;
 }