if (fProcessCosmics) { ProcessCosmics(fESD,fESDfriend); }
if(fMC) { ProcessMCEff(fESD,fMC,fESDfriend);}
if (fProcessITSTPCmatchOut) ProcessITSTPCmatchOut(fESD, fESDfriend);
- printf("processed event %d\n", Entry());
+ printf("processed event %d\n", Int_t(Entry()));
}
//_____________________________________________________________________________
// Find cosmic pairs (triggered or random)
//
//
- AliInputEventHandler* inputHandler = (AliInputEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
AliESDVertex *vertexSPD = (AliESDVertex *)event->GetPrimaryVertexSPD();
AliESDVertex *vertexTPC = (AliESDVertex *)event->GetPrimaryVertexTPC();
const Double_t kMinPt=0.8;
Int_t ntracks=event->GetNumberOfTracks();
UInt_t specie = event->GetEventSpecie(); // skip laser events
if (specie==AliRecoParam::kCalib) return;
-
+ Int_t ntracksFriend = esdFriend ? esdFriend->GetNumberOfTracks() : 0;
for (Int_t itrack0=0;itrack0<ntracks;itrack0++) {
//if (TMath::Abs(dcaTPC[1])<kMaxDelta[0]*2) continue;
// const AliExternalTrackParam * trackIn0 = track0->GetInnerParam();
AliESDfriendTrack* friendTrack0=NULL;
- if (esdFriend) {if (!esdFriend->TestSkipBit()) friendTrack0 = esdFriend->GetTrack(itrack0);} //this guy can be NULL
+ if (esdFriend &&!esdFriend->TestSkipBit()){
+ if (itrack0<ntracksFriend){
+ friendTrack0 = esdFriend->GetTrack(itrack0);
+ } //this guy can be NULL
+ }
for (Int_t itrack1=itrack0+1;itrack1<ntracks;itrack1++) {
AliESDtrack *track1 = event->GetTrack(itrack1);
AliESDfriendTrack* friendTrack1=NULL;
- if (esdFriend) {if (!esdFriend->TestSkipBit()) friendTrack1 = esdFriend->GetTrack(itrack1);} //this guy can be NULL
+ if (esdFriend &&!esdFriend->TestSkipBit()){
+ if (itrack1<ntracksFriend){
+ friendTrack1 = esdFriend->GetTrack(itrack1);
+ } //this guy can be NULL
+ }
+
//
AliESDfriendTrack *friendTrackStore0=friendTrack0; // store friend track0 for later processing
AliESDfriendTrack *friendTrackStore1=friendTrack1; // store friend track1 for later processing
//
// Process laser events -> dump tracks and clusters to the special tree
//
+ const Double_t kMinPt = 5;
if(!fFillTree) return;
if(!fTreeSRedirector) return;
const AliESDHeader* esdHeader = esdEvent->GetHeader();
if(!track) continue;
if(track->GetTPCInnerParam()) countLaserTracks++;
AliESDfriendTrack* friendTrack=NULL;
+ // suppress beam background and CE random reacks
+ if (track->GetInnerParam()->Pt()<kMinPt) continue;
+ Bool_t skipTrack=gRandom->Rndm()>1/(1+TMath::Abs(fFriendDownscaling));
+ if (skipTrack) continue;
if (esdFriend) {if (!esdFriend->TestSkipBit()) friendTrack = esdFriend->GetTrack(iTrack);} //this guy can be NULL
(*fTreeSRedirector)<<"Laser"<<
"gid="<<gid<< // global identifier of event
"triggerClass="<<&triggerClass<< // trigger
"Bz="<<bz<< // magnetic field
"multTPCtracks="<<countLaserTracks<< // multiplicity of tracks
- "track=."<<track<< // track parameters
+ "track.="<<track<< // track parameters
"friendTrack.="<<friendTrack<< // friend track information
"\n";
}
AliESDfriendTrack* friendTrack1=NULL;
if (esdFriend) {
if (!esdFriend->TestSkipBit()){
- friendTrack0 = esdFriend->GetTrack(v0->GetIndex(0)); //this guy can be NULL
- friendTrack1 = esdFriend->GetTrack(v0->GetIndex(1)); //this guy can be NULL
+ Int_t ntracksFriend = esdFriend->GetNumberOfTracks();
+ if (v0->GetIndex(0)<ntracksFriend){
+ friendTrack0 = esdFriend->GetTrack(v0->GetIndex(0)); //this guy can be NULL
+ }
+ if (v0->GetIndex(1)<ntracksFriend){
+ friendTrack1 = esdFriend->GetTrack(v0->GetIndex(1)); //this guy can be NULL
+ }
}
}
if (track0->GetSign()<0) {
AliESDtrack *track = esdEvent->GetTrack(iTrack);
if(!track) continue;
AliESDfriendTrack* friendTrack=NULL;
- if (esdFriend) {if (!esdFriend->TestSkipBit()) friendTrack = esdFriend->GetTrack(iTrack);} //this guy can be NULL
+ if (esdFriend && !esdFriend->TestSkipBit()) {
+ Int_t ntracksFriend = esdFriend->GetNumberOfTracks();
+ if (iTrack<ntracksFriend){
+ friendTrack = esdFriend->GetTrack(iTrack);
+ } //this guy can be NULL
+ }
+
if(track->Charge()==0) continue;
if(!esdTrackCuts->AcceptTrack(track)) continue;
if(!accCuts->AcceptTrack(track)) continue;