#include "AliLog.h"
#include "AliGeomManager.h"
+#include "AliITSReconstructor.h"
#include "AliITSgeomTGeo.h"
#include "AliTrackPointArray.h"
#include "AliESDInputHandler.h"
fESDfriend(0),
fListOfHistos(0),
fspTree(0),
+fHistNevents(0),
fHistNpoints(0),
fHistPt(0),
fHistLayer0(0),
delete fspTree;
fspTree = 0;
}
+ if (fHistNevents) {
+ delete fHistNevents;
+ fHistNevents = 0;
+ }
if (fHistNpoints) {
delete fHistNpoints;
fHistNpoints = 0;
{
// Create the output container
//
+
+ // load the geometry
+ if(!gGeoManager) {
+ printf("AliAlignmentDataFilterITS::CreateOutputObjects(): loading geometry from %s\n",fGeometryFileName.Data());
+ AliGeomManager::LoadGeometry(fGeometryFileName.Data());
+ if(!gGeoManager) {
+ printf("AliAlignmentDataFilterITS::CreateOutputObjects(): no geometry loaded \n");
+ return;
+ }
+ }
// Several histograms are more conveniently managed in a TList
fListOfHistos = new TList();
fListOfHistos->SetOwner();
+ fHistNevents = new TH1F("fHistNevents", "Number of processed events; N events; bin",5,-0.5,4.5);
+ fHistNevents->Sumw2();
+ fHistNevents->SetMinimum(0);
+ fListOfHistos->Add(fHistNevents);
+
fHistNpoints = new TH1F("fHistNpoints", "Number of AliTrackPoints per track; N points; tracks",25,-0.5,24.5);
fHistNpoints->Sumw2();
fHistNpoints->SetMinimum(0);
{
// Execute analysis for current event:
// write ITS AliTrackPoints for selected tracks to fspTree
-
- // load the geometry
- if(!gGeoManager) {
- AliGeomManager::LoadGeometry(fGeometryFileName.Data());
- if(!gGeoManager) {
- printf("AliAlignmentDataFilterITS::Exec(): no geometry loaded \n");
- return;
- }
+
+ // check the geometry
+ if(!gGeoManager) {
+ printf("AliAlignmentDataFilterITS::Exec(): no geometry loaded \n");
+ return;
}
// check if we have AliITSRecoParam
- if(!AliITSReconstructor::GetRecoParam()) {
+ if(!GetRecoParam()) {
if(!fITSRecoParam) {
printf("AliAlignmentDataFilterITS::Exec(): no AliITSRecoParam\n");
return;
}
}
+
if(!fESD) {
printf("AliAlignmentDataFilterITS::Exec(): no ESD \n");
return;
// attach ESDfriend
fESD->SetESDfriend(fESDfriend);
+ // Post the data for slot 0
+ fHistNevents->Fill(0);
// Process event as Cosmic or Collision
//if(esd->GetEventType()== ???? ) {
FilterCollision(fESD);
}
+ PostData(1,fListOfHistos);
+
return;
}
if(track->GetNcls(0)<GetRecoParam()->GetAlignFilterMinITSPoints()) continue;
- if(GetRecoParam()->GetAlignFilterOnlyITSSATracks() && track->GetNcls(1)>0) continue;
- if(GetRecoParam()->GetAlignFilterOnlyITSTPCTracks() && track->GetNcls(1)==0) continue;
+ if((GetRecoParam()->GetAlignFilterOnlyITSSATracks()) && track->GetNcls(1)>0) continue;
+ if((GetRecoParam()->GetAlignFilterOnlyITSTPCTracks()) && track->GetNcls(1)==0) continue;
Float_t phi = track->GetAlpha()+TMath::ASin(track->GetSnp());
Float_t theta = 0.5*TMath::Pi()-TMath::ATan(track->GetTgl());
layerId = AliGeomManager::VolUIDToLayer(volId,modId);
AliDebug(2,Form("%d %d\n",ipt,layerId-1));
if(point.IsExtra() &&
- GetRecoParam()->GetAlignFilterSkipExtra()) continue;
+ (GetRecoParam()->GetAlignFilterSkipExtra())) continue;
if(layerId>6) continue;
if(!GetRecoParam()->GetAlignFilterUseLayer(layerId-1)) continue;
// check minAngleWrtITSModulePlanes
curvArray[itrack] = track->GetC(esd->GetMagneticField());
curverrArray[itrack] = TMath::Sqrt(track->GetSigma1Pt2())*track->GetC(esd->GetMagneticField())/track->OneOverPt();
- if(!GetRecoParam()->GetAlignFilterCosmicMergeTracks()) {
+ if(!(GetRecoParam()->GetAlignFilterCosmicMergeTracks())) {
jpt=0;
arrayForTree = new AliTrackPointArray(nclsTrk[itrack]);
}
// Post the data for slot 0
if(jpt==1) PostData(1,fListOfHistos); // only if this is the first points
if(!point.IsExtra() ||
- !GetRecoParam()->GetAlignFilterFillQANtuples()) continue;
+ !(GetRecoParam()->GetAlignFilterFillQANtuples())) continue;
nclsTrk[itrack]--;
for(Int_t ll=1;ll<layerId;ll++) modId+=AliITSgeomTGeo::GetNLadders(ll)*AliITSgeomTGeo::GetNDetectors(ll);
AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
}
}
- if(!GetRecoParam()->GetAlignFilterCosmicMergeTracks()) {
+ if(!(GetRecoParam()->GetAlignFilterCosmicMergeTracks())) {
curv = curvArray[itrack];
curverr = curverrArray[itrack];
fspTree->Fill();
if(GetRecoParam()->GetAlignFilterCosmicMergeTracks()) {
curv = 0.5*(curvArray[0]+curvArray[1]);
curverr = 0.5*TMath::Sqrt(curverrArray[0]*curverrArray[0]+curverrArray[1]*curverrArray[1]);
- /*AliTrackPoint pppt;
- for(Int_t iii=0;iii<arrayForTree->GetNPoints();iii++) {
- arrayForTree->GetPoint(pppt,iii);
- pppt.Dump();
- }*/
fspTree->Fill();
}
PostData(0,fspTree);
- if(!GetRecoParam()->GetAlignFilterFillQANtuples()) return;
+ if(!(GetRecoParam()->GetAlignFilterFillQANtuples())) return;
// fill ntuple with track-to-track matching
Float_t phimu,thetamu,phiout,thetaout,dphi,dtheta,rotymu,rotyout,droty;
Float_t d0[2],z0[2];
if(track->GetNcls(0)<GetRecoParam()->GetAlignFilterMinITSPoints()) continue;
- if(GetRecoParam()->GetAlignFilterOnlyITSSATracks() && track->GetNcls(1)>0) continue;
- if(GetRecoParam()->GetAlignFilterOnlyITSTPCTracks() && track->GetNcls(1)==0) continue;
+ if((GetRecoParam()->GetAlignFilterOnlyITSSATracks()) && track->GetNcls(1)>0) continue;
+ if((GetRecoParam()->GetAlignFilterOnlyITSTPCTracks()) && track->GetNcls(1)==0) continue;
if(track->Pt()<GetRecoParam()->GetAlignFilterMinPt() ||
track->Pt()>GetRecoParam()->GetAlignFilterMaxPt()) continue;
layerId = AliGeomManager::VolUIDToLayer(volId,modId);
if(layerId<1 || layerId>6) continue;
if(point.IsExtra() &&
- GetRecoParam()->GetAlignFilterSkipExtra()) continue;
+ (GetRecoParam()->GetAlignFilterSkipExtra())) continue;
layerOK[layerId-1]=kTRUE;
jpt++;
}
layerId = AliGeomManager::VolUIDToLayer(volId,modId);
if(layerId<1 || layerId>6 || !layerOK[layerId-1]) continue;
if(!point.IsExtra() ||
- !GetRecoParam()->GetAlignFilterFillQANtuples()) continue;
+ !(GetRecoParam()->GetAlignFilterFillQANtuples())) continue;
ncls--;
for(Int_t ll=1;ll<layerId;ll++) modId+=AliITSgeomTGeo::GetNLadders(ll)*AliITSgeomTGeo::GetNDetectors(ll);
AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
return;
}
+ fHistNevents = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistNevents"));
fHistNpoints = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistNpoints"));
fHistPt = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistPt"));
fHistLayer0 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer0"));